ホームページ  >  記事  >  Java  >  Java コードを使用してファクトリ メソッド パターンを実装する方法

Java コードを使用してファクトリ メソッド パターンを実装する方法

WBOY
WBOY転載
2023-05-16 17:46:15824ブラウズ

1. ファクトリ メソッド パターンの概要

定義: ファクトリ メソッド パターンは、単純なファクトリ パターンをさらに抽象化したもので、元のコードを変更せずに新しい製品をシステムに導入できるという利点があります。 、開発要件を満たします。閉鎖原則。オブジェクトのインスタンス化用のインターフェイスを作成し、どのクラスをインスタンス化するかをサブクラスに決定させることで、クラスのインスタンス化プロセスをサブクラスに延期します。

2. ファクトリ メソッド パターンのクラス図 UML

Java コードを使用してファクトリ メソッド パターンを実装する方法

3. ファクトリ メソッド パターンの役割の説明

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();

使用手順:

  • 抽象製品クラスを作成し、製品のパブリック メソッドを定義します

  • 特定の製品クラスを作成します (抽象プロダクト インターフェイスを実装し、生成された特定のプロダクトを定義します

  • 抽象ファクトリ クラスを作成し、特定のファクトリのパブリック インターフェイスを定義します

  • ##特定のファクトリ クラスを作成し、対応する特定の製品インスタンスを作成するメソッドを定義します
  • 呼び出し元は、特定のファクトリ クラスのメソッドを呼び出して、さまざまな特定の製品のインスタンスを作成します
  • 5. ファクトリ パターンをもう一度探索します

問題の解決: 解決単純なファクトリ クラスに新しい製品を追加するときに、ファクトリ クラスのメソッド ロジックを変更するという論理的な問題を解決します。特殊な開閉原理です。

特定の製品の作成を終了して、ファクトリ クラスのサブクラス (特定のファクトリ) に移動します。この時点で、ファクトリ クラスはすべての製品の作成を担当しませんが、特定のファクトリが必要とするインターフェイスを提供します。新しい製品を追加する場合、ファクトリ クラスのロジックを変更する必要はなく、代わりに、開始と終了の原則に準拠した新しいファクトリ サブクラスが追加されます。

6. 利点と欠点

利点:

    高い柔軟性、新しい製品の作成には、対応するファクトリーをもう 1 つ作成するだけで済みます。 class
  • #ユーザーは、目的の製品を入手するために工場の名前をガイドするだけでよく、特定の製品の作成プロセスをガイドする必要はありません
  • ##欠点:

クラスが多すぎると複雑さが増しやすくなります

  • ##各工場では 1 種類の製品しか生産できません. この欠点は、抽象的な工場パターンを使用することで解決できます。

  • 7. アプリケーション シナリオ

    顧客は、製品を作成する工場の名前のみに注目します。特定の製品名を知る必要はありません

以上がJava コードを使用してファクトリ メソッド パターンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。