工場出荷時のパターンの三種類
ファクトリモードは、次の3つのカテゴリに分けることができます。
- シンプルなファクトリパターン(簡易ファクトリー)
- ファクトリメソッドモデル(ファクトリメソッド)
- 抽象ファクトリー(抽象ファクトリー)
上から下、徐々に抽象的で、より一般的にこれらの3つのモデル。
ファクトリメソッドモデル(ファクトリメソッド)Abstract Factoryパターン(要約ファクトリー):GOFでは、「デザインパターン」ブックファクトリーモードは2つのカテゴリに分類されます。単純なファクトリパターン(単純工場)は、両方のクラスに分類される、モードの特別な場合を見るためにファクトリメソッドです。
デザインモードで3つの工場出荷時のパターン分類をすべてされているスキーマを作成しました。
抽象クラスのスキーマ(生成に関するパターン)インスタンス化プロセスを作成し、オブジェクトに別々のソフトウェア・モジュールとオブジェクトを使用して作成することができます。ソフトウェアのより明確な構造を作るために、これらのオブジェクトの外の世界は、唯一のより多くの単一責任の原則に沿ったもので、システム全体の設計を彼らの共通のインタフェースを知っておく必要がありますが、具体的な実装の詳細を知りません。
スキーマがどのような(何)の観点で作成された作成し、(誰が)作成者、(とき)を作成するときなど、ソフトウェア設計者のための可能な限り最大の柔軟性を提供します。
スキーマを作成すると、クラスのインスタンスを作成の詳細を隠し、彼らは目的を達成するために、システム全体を作成するために一緒に結合しているかの独立した隠されたオブジェクトによって達成されます。
Factoryパターンは、より重要なスキーマを作成することです。工場モデルの主な機能は、オブジェクトをインスタンス化するために私たちを支援することです。インスタンス化オブジェクトは植物によって達成されるため、プラントモデル名は、言葉が含まれている理由は、工場は新しい操作に置き換えられます。
このパッケージの利点は、オブジェクトの詳細の一例であり、特に、より複雑なライフサイクルまたは標的の例の場合では、集中管理されなければなりません。これは、スケーラビリティを持参し、あなたのシステムの変形量を最小限に抑えることができます。
次は3つの工場出荷時のパターンを紹介しました。
シンプルなファクトリパターン
の単純なファクトリパターンは、静的ファクトリメソッド(staticファクトリメソッド)モードと呼ばれています。シンプルなファクトリパターンは、製品クラスのどのような種類のインスタンスを作成するファクトリオブジェクトによって決定されます。シンプルなファクトリパターンは、工場出荷時のモデルファミリーは、最もシンプルで実用的なモデルは、異なる植物の実現の特別なモードとして理解することが可能です。
シンプルなファクトリパターンの概要
ファクトリクラスは、単純なファクトリパターンの鍵となります。これは、外部与えられた情報に基づいて、決定するために必要なロジックが含まれ、その特定のクラスのオブジェクトを作成するかどうかを決めます。ファクトリクラスを使用することにより、外の世界は、直接恥ずかしのオブジェクトを作成し、特定の製品から出てくることができ、ちょうどその上に「消費者」オブジェクトの原因であることが必要です。そして、あなたが作成し、どのように整理するために正確にどのようにこれらのオブジェクトが必要です。それぞれの責任と権限をクリアし、全体のソフトウェアアーキテクチャを最適化するのに役立ちます。
しかし、責任の高い凝集配分の原則に違反するすべての論理インスタンスを作成するに焦点を当てたファクトリクラスに、すべてのファクトリクラスに論理フォーカスを作成し、それが唯一の口座にクラスを取って、事前に作成することができ、あなたは新しいを追加する必要がある場合クラスは、次に我々は、ファクトリクラスを変更する必要があります。
システムが成長している時間は、特定の製品カテゴリーである場合には、異なる基準に従って異なるインスタンスの工場のニーズによって作成された要件があるかもしれません。この判断と絡み合って、製品の特定の種類の条件の判断は、モジュールの機能、システムの維持・拡大の拡大を回避することは困難である非常に不利です。
特定の解決にFactory Methodパターンでは、これらの欠点。
Factory Methodパターン
また、工場出荷時のモードとして知られているファクトリメソッドモデル(ファクトリメソッドパターン)は、仮想コンストラクタ(仮想コンストラクタ)モードまたはクラスに作成されたスキーマに属している多型植物(ポリモーフィック工場)モードと呼ばれます。
モードは、オブジェクト指向のデザインパターンの概念を達成するためのファクトリメソッドである「植物を。」他の生成に関するパターンのように、それはまた、オブジェクトの特定のタイプを指定せずにオブジェクトを作成する際に問題に対処します。
この方法は、工場出荷時のモードを使用しています
ファクトリメソッドパターンとファクトリパターン、彼らは工場によってオブジェクトを作成するのは簡単ですが、それらの間の最大の違いはある - 「開閉の原則」Factory Methodパターンはに完全に準拠して完了するように設計されて
この方法は、以下の状況で、工場モードを使用することができます。
クラスは、クラスのオブジェクト必要と認識していません:Factory Methodパターン、クライアントはあなたが唯一の具体的なファクトリクラスによって作成された特定の製品のオブジェクトに対応する植物を知っている必要があり、クラス名、特定の製品カテゴリを知る必要はありませんが。クライアントは、製品固有のファクトリクラスを作成するために知っておく必要があります。
作成されたオブジェクトのサブクラスで指定されたクラス:ファクトリモード方法は、抽象クラスの工場でのみ製品インタフェースを作成する必要があり、オブジェクトが特定のオブジェクト指向の多型を作成するためにサブクラスによって決定することができますそして、リヒター置換原則は、プログラムが実行されている、オブジェクトのサブクラスを拡大するシステムが容易になり、親クラスのオブジェクトを上書きします。
タスクは、製品にサブカテゴリを作成するには、サブクラスの工場であるかもしれないものを気にせずに使用する場合、特定のクライアント、複数の植物のサブクラスのオブジェクトを作成するために、そして必要なときに動的に割り当てられ、特定のクラスファクトリクラスの名前にすることができ委託しますコンフィギュレーションファイルまたはデータベースに格納されています。
Factory Methodパターンは、次の役割が含まれて:
製品:抽象物
Operation
()ConcreteProduct:特定の製品(
OperationAdd
)工場:抽象ファクトリー(
IFactory
)ConcreteFactory:コンクリート工場(
AddFactory
)
Abstract Factoryパターン
抽象ファクトリー(Abstract Factoryパターン):自分の具象クラスを指定せずに、関連または依存オブジェクトインターフェイスのシリーズを作成します。また、キットとして知られているAbstract Factoryパターン、スキーマ・オブジェクトの作成に属します。
抽象工場モデルは、同じ製品ファミリの植物をカプセル化することができる分離する方法を提供します。通常の使用では、クライアントプログラムは、抽象工場の具体的な実装を作成し、インターフェイスとして主題を作成するために、抽象具象オブジェクトファクトリを使用する必要があります。共通のインタフェースのみこれらのクライアントオブジェクトを使用しているため、クライアントは、これらのメソッドの内部では、工場から得られたオブジェクトの特定のタイプを知っている(またはケア)する必要はありません。Abstract Factoryパターンの実装では、個別のオブジェクトの集合とそれらの一般的な使用を詳述します。
Abstract Factoryパターンを使用しています
Abstract Factoryパターンや工場法パターンが、オープンに準拠している - の原則を閉じました。その差は、ファクトリメソッドパターンは、特定の製品を高めるために、工場の対応する増加することです。しかし、Abstract Factoryパターンは、製品の新しいタイプは、特定の植物を追加する必要がある場合のみです。つまり、工場出荷時のモデルのファクトリメソッドは、1つの特定の製品を作成することができます。そして、工場Abstract Factoryパターンは、クラスタイプに属する特定の製品のさまざまなを作成することができます。工場数は、単純なファクトリパターンとFactory Methodパターン間の製品を作成することができます。
抽象的な工場モデルは、次の場合に使用することができます。
システムは、製品クラスのインスタンスが作成される方法に依存してはならない、工場出荷時のパターンのすべてのタイプのために重要である詳細と表現の組み合わせ、。
システムは、複数の製品ファミリ、前記各時間だけ1つの製品ファミリを持っています。
製品には制約がシステムの設計に反映されている必要があり、一緒に使用される同じ製品ファミリに属しています。
システムは、クライアントが特定の実装に依存しないように、製品のすべてが、同じインターフェースで表示され、製品のクラスライブラリを提供します。
Abstract Factoryパターンの実装
Abstract Factoryパターンは、次の役割が含まれています。
この方法は、抽象物を生成する宣言するために使用:AbstractFactory(抽象ファクトリー)
ConcreteFactory(特に植物):抽象工場は抽象製品は、各製品が製品を階層構造に配置され、製品のファミリーを構成する特定の製品のセットを生成し、生成された宣言されたメソッドを実装します。
AbstractProduct(抽象製品):各製品インターフェイスのステートメント、製品の抽象積で定義された抽象ビジネス方法。
製品(製品固有):インタフェース製品で定義された抽象ビジネスメソッドを達成するために、被写体の特定の製品の特定の工場の生産を定義します。
工場出荷時のパターン比較の三種類
シンプルなファクトリパターンの長所と短所
- 利点:
- 図1に示すように、遮蔽製品の具体的な実装は、呼び出し側は、唯一の製品のインターフェースに関する。
- 2、シンプル
- 短所:
- クローズドの原則 - 1、製品を増やし、あなたはファクトリクラスを変更する必要があり、オープンを満たしていません
- 2、責任の高い凝集配分の原則に違反するすべての論理インスタンスを作成するに焦点を当てたファクトリクラス
Factory Methodパターンの長所と短所
- 利点:
- 1、それは簡単なファクトリパターンの利点を継承します
- クローズ原則 - 2、オープンに準拠
- 短所:
- 1、ある程度システムの複雑さを増す、システムクラスのペアの数を増やすことで、その結果、新しいファクトリクラスを追加する必要があり、製品を向上させます。
Abstract Factoryパターンの長所と短所
- 利点:
- 1、顧客が作成されているかを知る必要がないように、特定のクラスの生成を分離します
- 図2に示すように、各クラスは、複数のオブジェクトによって作成することができるコンクリート工場製品ファミリは、製品ファミリは、新しいコンクリート工場製品ファミリと容易に追加するために、増加または代替的より便利です。
- 短所
- 「開閉の原則を」プレゼンテーションの傾きを新製品を追加する階層構造は非常に複雑で、サポートするために、すべての具体的なファクトリクラス抽象工場を変更する必要があります。

シンプルファクトリー:同じレベルの構造を生成するために使用される任意の製品。(新製品、主に新製品を追加するためには、単一の開口部を満たしていない責任の原則に沿ったファクトリクラスを変更する必要がある - 。原則休み)
ファクトリメソッド:製品の同じ階層構造を製造するためには、固定されています。(サポートは、新製品の既存の工場を変更する必要が任意の製品を追加していない、責任の原則に沿って、単一工場に対応した製品を向上させる必要が、オープンに沿って - 原理を閉じたが、複雑さを紹介します。)
抽象ファクトリー:すべての製品の異なる製品群を生成するために使用されます。(新製品を追加すると、植物は製品ファミリを高めるために修正する必要があり、一部はオープンに合わせて、単一責任の原則に沿って植物を増加させる必要性 - 閉じ原則として、複雑さの低減)
最後に、すべての3つのモデルは、長所と短所の工場を持っている、唯一の最も適した、何の最高はありません!
参考リンクします。https://www.hollischuang.com/archives/3709