stateパターン

状態を表すクラス

例えば活性状態(Activate)、非活性状態(Deactivate)があるとする。

その時の振る舞いをそのクラスに実装する

class Activate
  def get_color
    "yellow"
  end

  def change_state(is_avtive)
    return self if is_active

   Deactive.new
  end

end
class Deactivate
  def get_color
    "grey"
  end

  def change_state(is_avtive)
    return self if !is_active

   Active.new
  end
end
class Button
  def initialize
    @is_avtive = true
    @state = Deactivate.new
  end

  def color
    @state.get_color
  end

  def click
    @state = @state.change_state(!@is_active)
  end
end