私はインターネット上で抽象的な工場パターンを学習しており、基本的な質問が1つあります。 Wikipediaのクラス図を含むクラス図のほとんどは、クライアントがAbstractFactoryとAbstractProductを参照していることを示しています。クライアントは実際に具体的なファクトリへの参照を持っていません。しかし、すべてのほとんどのすべてcode私はクライアントコードまたはメインメソッドで具体的な工場のインスタンスを作成するインターネット上で見てきました。それは正しい実装ですか?クライアントが抽象的なファクトリと抽象的な製品について知る必要があるのは本当ですか?具体的な工場をクライアントに抽象的な工場パターンで公開する必要がありますか
0
A
答えて
1
明らか
ないか、それが簡単に交換すること防止し、すべて一緒パターンの目的を台無しにしてしまう「我々は抽象工場 パターンでクライアントにコンクリート工場を公開する必要がありますか」もう1つの工場(別の工場のための1つのオブジェクト・ファミリー)。
はallmost、私はインターネット上で見てきたすべてのコードは、クライアントコードまたはmainメソッド
、コンクリート工場がインスタンス化されます、コード内の場所が存在する必要がありますが、その中で、具体的な工場のインスタンスを作成しますComposition Rootになります。それ以外は間違っているでしょう。
+0
+1は合成ルートです。私が遭遇したもう一つの用語は '配線'でした。クライアント側環境のいくつかの属性に基づいて、コンクリート工場を知るクライアントなしで、コンクリート工場を使用することができます。抽象的な工場パターンの主な目的は、実際のコンクリート製品を環境に隠すことです。これにより、同じコードが別の環境に移植された場合や、基礎となる製品クラスが変更された場合のメンテナンスが容易になります。私は、彼らが隠されたままだが、具体的な工場クラスの露出が緩和できると感じている。 –
このような抽象的な質問では、答えは不可能です。工場は創造的なパターンです。オブジェクトを作成します。それでおしまい。他のすべてが範囲外です – zerkms
[なぜ抽象ファクトリデザインパターンが必要なのですか?](http://stackoverflow.com/questions/2280170/why-do-we-need-abstract-factory-design-パターン) – Nemus