Java のファクトリ パターンの基本概念と原則
ファクトリ パターンは、共通のインターフェイスを通じてオブジェクトを作成することを目的とした一般的な設計パターンであり、具体的な実装の詳細を知っていること。このパターンにより、より柔軟で拡張可能なコード構造が提供されます。 Java では、単純なファクトリ パターン、ファクトリ メソッド パターン、抽象ファクトリ パターンなど、ファクトリ パターンを実装するさまざまな方法があります。
シンプル ファクトリ パターンは、ファクトリ クラスを通じてオブジェクトを作成するファクトリ パターンの最も基本的な形式です。通常、このファクトリ クラスには、さまざまなパラメータに基づいてさまざまなオブジェクト インスタンスを作成するための静的メソッドが含まれています。以下は簡単な例です。
public class SimpleFactory { public static Product createProduct(String type) { if(type.equals("A")) { return new ConcreteProductA(); } else if(type.equals("B")) { return new ConcreteProductB(); } return null; } } public interface Product { void doSomething(); } public class ConcreteProductA implements Product { @Override public void doSomething() { System.out.println("Product A do something."); } } public class ConcreteProductB implements Product { @Override public void doSomething() { System.out.println("Product B do something."); } } public class Main { public static void main(String[] args) { Product productA = SimpleFactory.createProduct("A"); productA.doSomething(); Product productB = SimpleFactory.createProduct("B"); productB.doSomething(); } }
上記のコードのSimpleFactory
は、渡されたパラメーターに基づいて対応する製品オブジェクトを作成する単純なファクトリ クラスです。Product
は、製品オブジェクトの基本的な動作を定義する抽象インターフェイスです。ConcreteProductA
とConcreteProductB
は特定の製品クラスであり、それぞれProduct
インターフェイスを実装します。
ファクトリ メソッド パターンは、単純なファクトリ パターンを改良したもので、特定の製品の作成をそれぞれのファクトリ クラスに移動します。このパターンは、抽象ファクトリ インターフェイスと複数の具象ファクトリ クラスを定義することによってオブジェクトの作成を実装します。以下に例を示します。
public interface Factory { Product createProduct(); } public class ConcreteFactoryA implements Factory { @Override public Product createProduct() { return new ConcreteProductA(); } } public class ConcreteFactoryB implements Factory { @Override public Product createProduct() { return new ConcreteProductB(); } } public class Main { public static void main(String[] args) { Factory factoryA = new ConcreteFactoryA(); Product productA = factoryA.createProduct(); productA.doSomething(); Factory factoryB = new ConcreteFactoryB(); Product productB = factoryB.createProduct(); productB.doSomething(); } }
上記のコードのFactory
は、製品を作成するメソッドを定義する抽象ファクトリ インターフェイスです。ConcreteFactoryA
およびConcreteFactoryB
は、それぞれConcreteProductA
およびConcreteProductB
製品オブジェクトを作成する特定のファクトリ クラスです。
抽象ファクトリ パターンは、ファクトリ メソッド パターンをさらに拡張したもので、関連製品または依存製品のセットを作成します。このパターンは、抽象ファクトリ インターフェイスと複数の具体的なファクトリ クラスを提供します。各ファクトリ クラスは、一連の関連製品の作成を担当します。以下に例を示します。
public interface AbstractFactory { ProductA createProductA(); ProductB createProductB(); } public class ConcreteFactory1 implements AbstractFactory { @Override public ProductA createProductA() { return new ConcreteProductA1(); } @Override public ProductB createProductB() { return new ConcreteProductB1(); } } public class ConcreteFactory2 implements AbstractFactory { @Override public ProductA createProductA() { return new ConcreteProductA2(); } @Override public ProductB createProductB() { return new ConcreteProductB2(); } } public interface ProductA { void doSomething(); } public class ConcreteProductA1 implements ProductA { @Override public void doSomething() { System.out.println("ProductA1 do something."); } } public class ConcreteProductA2 implements ProductA { @Override public void doSomething() { System.out.println("ProductA2 do something."); } } public interface ProductB { void doSomething(); } public class ConcreteProductB1 implements ProductB { @Override public void doSomething() { System.out.println("ProductB1 do something."); } } public class ConcreteProductB2 implements ProductB { @Override public void doSomething() { System.out.println("ProductB2 do something."); } } public class Main { public static void main(String[] args) { AbstractFactory factory1 = new ConcreteFactory1(); ProductA productA1 = factory1.createProductA(); productA1.doSomething(); ProductB productB1 = factory1.createProductB(); productB1.doSomething(); AbstractFactory factory2 = new ConcreteFactory2(); ProductA productA2 = factory2.createProductA(); productA2.doSomething(); ProductB productB2 = factory2.createProductB(); productB2.doSomething(); } }
上記のコードのAbstractFactory
は、複数の製品を作成するためのメソッドを定義する抽象ファクトリ インターフェイスです。ConcreteFactory1
とConcreteFactory2
は、それぞれ一連の製品オブジェクトProductA
とProductB
を作成する特定のファクトリ クラスです。ProductA
およびProductB
は、製品の基本的な動作を定義する抽象的な製品インターフェイスです。ConcreteProductA1
、ConcreteProductA2
、ConcreteProductB1
、およびConcreteProductB2
は、それぞれProductA
と ## を実装する特定の製品クラスです。 #製品Bインターフェイス。
以上がJava ベースのファクトリ パターンの基本概念と原則の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。