PHP ファクトリ パターン 概念: ファクトリ パターンは、オブジェクトを作成する特定のメソッドを持つクラスです。 new を直接使用せずに、ファクトリ クラスを使用してオブジェクトを作成できます。このようにすると、作成されるオブジェクトのタイプを変更する場合は、ファクトリを変更するだけで済みます。このファクトリを使用するすべてのコードは自動的に変更されます。
さまざまな抽象化レベルに従って、PHP ファクトリ パターンは、単純なファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターンに分類されます。違い:
シンプル ファクトリ モード: 同じ階層構造で任意の製品を生産するために使用されます。新しい製品の追加については何もできません
ファクトリー モード: 同じ階層構造で固定された製品を生産するために使用されます。 (任意の製品の追加をサポート)
抽象ファクトリー: さまざまな製品ファミリーのすべての製品を生産するために使用されます。 (新しい製品の追加については何もできません。製品ファミリーの追加はサポートされています)
上記 3 つのファクトリ メソッドは、階層構造と製品ファミリーの 2 つの方向で異なるサポート レベルを持っています。したがって、状況に応じてどのメソッドを使用するかを検討する必要があります
適用範囲:
単純なファクトリ パターン:
ファクトリ クラスは、より少ないオブジェクトを作成する責任があります。顧客はファクトリ クラスに渡されるパラメータのみを知っており、知りません。オブジェクトの作成方法に注意してください。
ファクトリ メソッド パターン:
クラスが作成する必要があるオブジェクトのクラスを知らない場合、またはクラスが作成するオブジェクトをサブクラスに指定する必要がある場合、クラスがオブジェクト作成の責任を複数のヘルパー サブクラスに委任する場合これらのいずれかがあり、どのヘルパー サブクラスがデリゲートであるかに関する情報をローカライズしたい場合は、ファクトリ メソッド パターンを使用できます。
抽象的なファクトリ パターン:
システムは、製品クラスのインスタンスがどのように作成、構成、表現されるかという詳細に依存すべきではありません。これは、あらゆる形式のファクトリ パターンにとって重要です。このシステムには複数の製品ファミリーがあり、システムはそのうちの 1 つの製品ファミリーのみを使用します。同じ製品ファミリに属する製品は一緒に使用されるため、この制約をシステム設計に反映する必要があります。システムは製品クラス ライブラリを提供し、すべての製品は同じインターフェイスで表示されるため、クライアントは実装に依存しません。
単純なファクトリ パターン、ファクトリ パターン、抽象的なファクトリ パターンのいずれであっても、最大限の再利用を実現するために、基本的に不変部分を抽出し、可変部分をインターフェイスとして残します。どの設計パターンがより適しているかは、特定のビジネス ニーズによって異なります。
PHP の単純なファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターンの比較に関するその他の記事については、PHP 中国語 Web サイトに注目してください。
関連記事:
Javaで抽象ファクトリパターンを実装するための具体的なコードを詳しく解説
JAVAデザインパターンのAbstract Factory Pattern
PHPオブジェクト指向開発 - Abstract Factory Pattern