デザインパターン-FactoryMethod
FactoryMethodパターンとは
FactoryMethodパターンは、インスタンスの生成をサブクラスに任せることで、より柔軟なインスタンス生成することを目的とするパターンです。
インスタンスを生成するサブクラスを「Factory=工場」に見立てています。
FactoryMethodパターンのメリット
- 生成するインスタンスの種類が多くなりそうな場合に、インスタンス生成の責務を外に切り出すことで、保守性を高めることができます。
- 生成と処理を分離することで、利用側の変更なしに処理(クラス)を追加することができます。
- クラスの生成を隠蔽することで、結合度を下げることができます。
構成要素
- AbstractFactoryクラス
- Factoryの共通したテンプレートを定義する抽象クラス
- ConcreteFactoryクラス
- Factoryの個別実装を受け持つ継承クラス
- AbstractProduct
- Productのインターフェースとテンプレートを定義する抽象クラス
- ConcreteProduct
- Productの個別実装を受け持つ
rubyによるFactoryMethodパターンの実装
#!/usr/bin/env ruby
# Productの抽象クラス
class AbstractProduct
def use
end
end
# Productの個別実装
class ConcreteProduct < AbstractProduct
def initialize(str)
@owner = str
end
def use
"#{@owner}を利用します。"
end
end
# Factoryの抽象クラス
class AbstractFactory
def create(*arg)
create_product(*arg)
end
end
# Factoryの個別実装を受け持つ継承クラス
class ConcreteFactory < AbstractFactory
def create_product(str)
ConcreteProduct.new(str)
end
end
factory = ConcreteFactory.new
product = factory.create("menu")
puts(product.use)
関連ページ
- デザインパターン
- デザインパターン-FactoryMethod
- デザインパターン-Builder
- デザインパターン-Prototype
- デザインパターン-Singleton
- デザインパターン-AbstractFactory