Rubyのファクトリーメソッドとは何ですか?
概要
ファクトリ メソッドは、self キーワードを利用して独自のクラスのオブジェクトをインスタンス化するクラス メソッドであると理解しています。これがどのように役立つのか、または初期化メソッドの機能をどのように拡張できるのかわかりません。
私はコマンド ライン アドレス帳を作成するプロジェクトに取り組んでいます。このプロジェクトでは、異なる属性を持つ研修生または講師 (サブクラス) を作成できるように、パーソン クラスでファクトリ パターンを使用するように求められます。
解決策
ファクトリ クラスは、さまざまな種類のオブジェクトを生成する単一のファクトリ メソッドを使用する簡単な方法です。 これはパラメータを受け取ります。パラメータは、作成するオブジェクトの種類をメソッドに指示します。たとえば、渡されたシンボルに応じて従業員または上司を生成するには、次のようにします。
class Person
def initialize(attributes)
end
end
class Boss
def initialize(attributes)
end
end
class Employee
def initialize(attributes)
end
end
class PersonFactory
TYPES = {
employee: Employee,
boss: Boss
}
def self.for(type, attributes)
(TYPES[type] || Person).new(attributes)
end
end
その後:
employee = PersonFactory.for(:employee, name: 'Danny')
boss = PersonFactory.for(:boss, name: 'Danny')
person = PersonFactory.for(:foo, name: 'Danny')
このトピックについては、より詳細なブログ投稿も書きました: The Factory Pattern