注:質問は投稿の最後にあります。
抽象ファクトリとファクトリメソッドに関する他のスタックオーバーフロースレッドを読みました。それぞれのパターンの意図を理解しています。しかし、その定義ははっきりしていません。
ファクトリメソッドは、オブジェクトを作成するためのインターフェイスを定義しますが、サブクラスがインスタンス化するインターフェイスを決定できるようにします。ファクトリメソッドを使用すると、クラスはインスタンス化をサブクラスに延期できます。
対照的に、Abstract Factoryは、具体的なクラスを指定せずに、関連オブジェクトまたは依存オブジェクトのファミリーを作成するためのインターフェースを提供します。
抽象ファクトリはファクトリメソッドと非常によく似ています。私の主張を説明するために、いくつかのUMLクラスを作成しました。
ノート:
- この図はwww.yuml.comからのものであるため、完全に方向付けられているわけではありません。しかし、それは無料のサービスです:)。
- ダイアグラムは完全ではない可能性があります。私はまだGoFデザインパターンを学んでいます。
ファクトリメソッド:
抽象ファクトリ(メンバーは1つのみ):
抽象ファクトリ(より多くのメンバー):
質問:
- Abstract Factoryにクリエーターと製品が1つしかない場合でも、Abstract Factoryパターンですか?(家族を作成するためのインターフェース)
- ファクトリメソッドの具象作成者はインターフェイスから作成できますか、それともクラスから作成する必要がありますか?(クラスはインスタンス化をサブクラスに延期します)
- 抽象ファクトリが1つの作成者と1つの製品しか持てない場合、抽象ファクトリとファクトリメソッドの唯一の違いは、前者の作成者がインターフェイスであり、後者の作成者がクラスであるということですか?