Javaファクトリパターンの3つの実装方法を深く理解する
Java ファクトリ パターンの 3 つの実装方法についての深い理解
ファクトリ パターンは、オブジェクトを作成する最適な方法を提供する創造的なデザイン パターンです。オブジェクトの作成プロセスと使用プロセスは、コードを分離し、コードの保守性とスケーラビリティを向上させるのに役立ちます。 Java では、ファクトリ パターンは幅広い用途に使用できます。この記事では、Java ファクトリ パターンの 3 つの実装方法を紹介し、具体的なコード例を示します。
- シンプル ファクトリ パターン
シンプル ファクトリ パターンは静的ファクトリ パターンとも呼ばれ、ファクトリ クラスを通じて、さまざまなパラメータに従ってさまざまなインスタンス オブジェクトが作成されます。これには、ファクトリ クラス、抽象製品クラス、具体的な製品クラスの 3 つの役割が含まれています。
以下は、単純なファクトリ パターンのサンプル コードです。
// 抽象产品类 interface Product { void print(); } // 具体产品类A class ProductA implements Product { @Override public void print() { System.out.println("Product A"); } } // 具体产品类B class ProductB implements Product { @Override public void print() { System.out.println("Product B"); } } // 工厂类 class SimpleFactory { public static Product createProduct(String type) { if (type.equals("A")) { return new ProductA(); } else if (type.equals("B")) { return new ProductB(); } else { throw new IllegalArgumentException("Invalid product type."); } } } // 测试代码 public class Main { public static void main(String[] args) { Product productA = SimpleFactory.createProduct("A"); productA.print(); // 输出:Product A Product productB = SimpleFactory.createProduct("B"); productB.print(); // 输出:Product B } }
上記のコードでは、抽象製品クラス Product
が印刷方法と特定の製品を定義します。クラス ProductA
および ProductB
はこのメソッドを実装します。ファクトリ クラス SimpleFactory
は、静的メソッド createProduct
を使用して、受信パラメータ タイプに従って対応する製品オブジェクトを作成します。
- ファクトリ メソッド パターン
ファクトリ メソッド パターンはファクトリ パターンとも呼ばれ、ファクトリ クラスで製品を作成するロジックをサブカテゴリの特定の各ファクトリに配布します。これには、抽象ファクトリ クラス、具象ファクトリ クラス、抽象製品クラス、具象製品クラスの 4 つの役割が含まれています。
次に、ファクトリ メソッド パターンのサンプル コードを示します。
// 抽象产品类 interface Product { void print(); } // 具体产品类A class ProductA implements Product { @Override public void print() { System.out.println("Product A"); } } // 具体产品类B class ProductB implements Product { @Override public void print() { System.out.println("Product B"); } } // 抽象工厂类 interface Factory { Product createProduct(); } // 具体工厂类A class FactoryA implements Factory { @Override public Product createProduct() { return new ProductA(); } } // 具体工厂类B class FactoryB implements Factory { @Override public Product createProduct() { return new ProductB(); } } // 测试代码 public class Main { public static void main(String[] args) { Factory factoryA = new FactoryA(); Product productA = factoryA.createProduct(); productA.print(); // 输出:Product A Factory factoryB = new FactoryB(); Product productB = factoryB.createProduct(); productB.print(); // 输出:Product B } }
上記のコードでは、抽象製品クラス Product
が印刷メソッドと特定の製品を定義します。クラス ProductA
および ProductB
はこのメソッドを実装します。抽象ファクトリ クラス Factory
は製品を作成するための抽象メソッドを定義し、特定のファクトリ クラス FactoryA
および FactoryB
はそれぞれこのメソッドを実装し、対応する製品オブジェクトを作成します。
- 抽象ファクトリ パターン
抽象ファクトリ パターンはファクトリ メソッド パターンの拡張であり、複数の抽象プロダクト クラス、複数の具象プロダクト クラスで構成されます。抽象ファクトリ クラスと複数の具象ファクトリ クラス。これは、関連するオブジェクトまたは相互依存するオブジェクトのファミリーを作成するための最適な方法を提供します。
以下は、抽象ファクトリ パターンのサンプル コードです。
// 抽象产品类A interface ProductA { void print(); } // 具体产品A1 class ProductA1 implements ProductA { @Override public void print() { System.out.println("Product A1"); } } // 具体产品A2 class ProductA2 implements ProductA { @Override public void print() { System.out.println("Product A2"); } } // 抽象产品类B interface ProductB { void print(); } // 具体产品B1 class ProductB1 implements ProductB { @Override public void print() { System.out.println("Product B1"); } } // 具体产品B2 class ProductB2 implements ProductB { @Override public void print() { System.out.println("Product B2"); } } // 抽象工厂类 interface AbstractFactory { ProductA createProductA(); ProductB createProductB(); } // 具体工厂类1 class ConcreteFactory1 implements AbstractFactory { @Override public ProductA createProductA() { return new ProductA1(); } @Override public ProductB createProductB() { return new ProductB1(); } } // 具体工厂类2 class ConcreteFactory2 implements AbstractFactory { @Override public ProductA createProductA() { return new ProductA2(); } @Override public ProductB createProductB() { return new ProductB2(); } } // 测试代码 public class Main { public static void main(String[] args) { AbstractFactory factory1 = new ConcreteFactory1(); ProductA productA1 = factory1.createProductA(); productA1.print(); // 输出:Product A1 ProductB productB1 = factory1.createProductB(); productB1.print(); // 输出:Product B1 AbstractFactory factory2 = new ConcreteFactory2(); ProductA productA2 = factory2.createProductA(); productA2.print(); // 输出:Product A2 ProductB productB2 = factory2.createProductB(); productB2.print(); // 输出:Product B2 } }
上記のコードでは、抽象製品クラス ProductA
と ProductB
がそれぞれ使用されています。 print メソッドを定義し、特定の製品クラス ProductA1
、ProductA2
、ProductB1
、および ProductB2
がこのメソッドを実装します。抽象ファクトリ クラス AbstractFactory
はプロダクトを作成するための 2 つの抽象メソッドを定義し、具象ファクトリ クラス ConcreteFactory1
と ConcreteFactory2
はそれぞれこれら 2 つのメソッドを実装して、対応するプロダクトを作成します。
上記の 3 つの実装方法のコード例を通じて、Java ファクトリ パターンのアプリケーションと実装についてより深く理解できます。さまざまなシナリオやニーズに応じて、適切なファクトリ パターンを選択すると、コードの保守性と拡張性が向上し、コードがより柔軟で保守しやすくなります。
以上がJavaファクトリパターンの3つの実装方法を深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。
