🍣

スペシフィケーションパターンのこと始め

2023/11/07に公開

概要

スペシフィケーションパターンについて実例を記載する。

題材

3歳以上かつ1000円以上の所持金でシャボン玉を購入出来るか判定する論理をスペシフィケーションパターンで実現する。

実例

# frozen_string_literal: true

class Person
  attr_reader :year, :money

  def initialize(year, money)
    @year = year
    @money = money
  end
end

class PurchaseSoapBubbleSpecification
  def satisfied_by?(person)
    if person.year >= 3 && person.money >= 1000
      true
    else
      false
    end
  end
end

person1 = Person.new(3, 1000)
person2 = Person.new(3, 999)

specification = PurchaseSoapBubbleSpecification.new
pp specification.satisfied_by?(person1) #=> true
pp specification.satisfied_by?(person2) #=> false

実行結果は、次の通りです。

russ@penguin:~$ ruby specification.rb 
true
false

Discussion