定義: ファクトリ メソッド パターンは、単純なファクトリ パターンをさらに抽象化したもので、元のコードを変更せずに新しい製品をシステムに導入できるという利点があります。 、開発要件を満たします。閉鎖原則。オブジェクトのインスタンス化用のインターフェイスを作成し、どのクラスをインスタンス化するかをサブクラスに決定させることで、クラスのインスタンス化プロセスをサブクラスに延期します。
Abstract Factory (AbstractFactory): 提供されています。製品のインターフェイス。呼び出し元は、これを通じて特定のファクトリのファクトリ メソッドにアクセスして製品を作成します。
コンクリート ファクトリ (ConcreteFactory): 抽象ファクトリによって定義されたメソッドを実装し、特定の製品の作成を完了します
抽象製品 (Product): 製品の仕様を定義し、製品の主な機能と性能を説明します。
#具体的な製品 (ConcreteProduct): 抽象的な製品を定義する方法を実装します。具体的な工場があります。製品、具体的な工場、具体的な製品間の 1 対 1 対応4. コードの実装ファクトリ メソッド パターンの実装:/** * 抽象工厂:提供具体工厂的共有方法 */ public interface Product { public void show(); } public class ConcreteProduct1 implements Product { @Override public void show() { System.out.println("具体产品1展示..."); } } public class ConcreateProduct2 implements Product { @Override public void show() { System.out.println("具体产品2展示..."); } } /** * 抽象工厂 */ public interface AbstractFactory { public Product createProduct(); } /** * 具体工厂1产生具体产品1 */ public class ConcreteFactory1 implements AbstractFactory { @Override public Product createProduct() { ConcreteProduct1 concreteProduct1 = new ConcreteProduct1(); System.out.println("具体工厂1创建具体产品1..."); return concreteProduct1; } public class ConcreteFactory2 implements AbstractFactory { @Override public Product createProduct() { System.out.println("具体工厂2产生具体产品2..."); return new ConcreateProduct2(); } }
//获取具体产品1 Product product = new ConcreteFactory1().createProduct(); product.show(); Product product1 = new ConcreteFactory2().createProduct(); product1.show();
特定の製品の作成を終了して、ファクトリ クラスのサブクラス (特定のファクトリ) に移動します。この時点で、ファクトリ クラスはすべての製品の作成を担当しませんが、特定のファクトリが必要とするインターフェイスを提供します。新しい製品を追加する場合、ファクトリ クラスのロジックを変更する必要はなく、代わりに、開始と終了の原則に準拠した新しいファクトリ サブクラスが追加されます。
6. 利点と欠点
##欠点:
クラスが多すぎると複雑さが増しやすくなります
以上がJava コードを使用してファクトリ メソッド パターンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。