シンプル ファクトリ、ファクトリ メソッド、および抽象ファクトリはすべて、デザイン パターンの作成パターンです。その主な機能は、オブジェクトのインスタンス化部分を抽出し、システム アーキテクチャを最適化し、システムのスケーラビリティを強化するのに役立ちます。
この記事は、これら 3 つのモードについての私の研究と、それらの違いについての私の理解をまとめたものです。
Simple Factory
シンプル ファクトリ パターンのファクトリ クラスは通常、静的メソッドを使用して、受け取ったさまざまなパラメーターに基づいてさまざまなオブジェクト インスタンスを返します。
コードを変更しないと拡張できません。
ファクトリメソッド
ファクトリメソッドは、製品ごとにファクトリクラスを提供します。異なる製品インスタンスは、異なるファクトリ インスタンスを通じて作成されます。
同じ階層構造内に、任意の商品を追加できます。
Abstract Factory
Abstract Factoryはプロダクトファミリーの概念に対応します。たとえば、各自動車会社は乗用車、トラック、バスを同時に生産したいと考えているため、各工場には乗用車、トラック、バスを作成する方法が必要です。
製品ファミリーの概念に応えて誕生しました。新しい製品ラインを追加するのは簡単ですが、新しい製品を追加することは不可能です。
まとめ
★ファクトリーパターンで重要なのはプロダクトクラスではなくファクトリークラスです。製品クラスは、複数レベルの継承や単一クラスなど、さまざまな形式をとることができます。ただし、ファクトリ モード インターフェイスは 1 種類のインスタンスのみを返すことは明らかです。製品クラスを設計する際には、親クラスまたは共同実装されたインターフェイスを使用することが最善です。
★ファクトリ パターンを使用すると、返されるインスタンスはファクトリによって作成される必要があり、他のオブジェクトから取得することはできません。
★ファクトリパターンで返すインスタンスは新たに作成する必要はなく、ファクトリで作成したインスタンスを返すことも可能です。
違い
シンプルファクトリー: 同じレベル構造で任意の製品を生産するために使用されます。 (新しい製品の追加については何もできません)
ファクトリーモード: 同じ階層構造で固定された製品を生産するために使用されます。 (任意の製品の追加をサポート)
抽象ファクトリー: さまざまな製品ファミリーのすべての製品を生産するために使用されます。 (新しい製品の追加については何もできません。製品ファミリーの追加はサポートされています)
上記 3 つのファクトリ メソッドは、階層構造と製品ファミリーの 2 つの方向で異なるサポート レベルを持っています。したがって、状況に応じてどの方法を使用するかを検討してください。
その他の JAVA デザイン パターン: シンプル ファクトリ、ファクトリ メソッド、および抽象ファクトリの概要と違い 関連記事については、PHP 中国語 Web サイトに注目してください。