Constructor Method

インスタンスを生成するために何が必要かを明らかにするため、必要なパラメータをとり適切なインスタンス生成を行うメソッドを用意しましょう。

オブジェクトの生成に関するパターンです。
オブジェクトの生成を表現するもっとも単純でもっとも柔軟な方法は、newにより空のインスタンスを生成し、その後setterにより必要な情報を設定していくという方法になります。
しかし、この方法だと、何がオブジェクトの生成に必須の情報で何がオプションの情報になるのかが利用者にとって分かりづらいものになってしまいます。
インスタンスを生成するために何が必要かを明らかにするため、必要なパラメータをとり適切なインスタンス生成を行うメソッドを用意しましょう。

class Point
  def initialize(x, y)
    @x = x
    @y = y
  end

  def self.polar(r, theta)
    self.new(r * Math.cos(theta), r * Math.sin(theta))
  end
end