ファクトリ メソッド パターン: 仮想コンストラクタ パターンまたはポリモーフィック ファクトリ パターンとも呼ばれ、クラス作成パターンに属します。
ファクトリ メソッド パターンでは、ファクトリの親クラスは製品オブジェクトを作成するためのパブリック インターフェイスの定義を担当し、ファクトリのサブクラスは特定の製品オブジェクトの生成を担当します。この目的はインスタンス化することです。製品クラス 操作はファクトリ サブクラスに延期されます。つまり、ファクトリ サブクラスは、どの特定の製品クラスをインスタンス化するかを決定するために使用されます。 今日の実際の工場における分業は、ますます詳細かつ専門化していることがわかっています。 。さまざまな製品が専門工場で生産され、自給自足の小規模農家経済の時代に完全に別れを告げ、製品の生産サイクルが大幅に短縮され、生産効率が向上します。ファクトリ メソッド パターンは、開閉の原則を満たすだけでなく、単純なファクトリ パターンの利点も継承しています。例:
単純なファクトリ パターン記事の Coke 工場では、ファクトリ クラスが 1 つしかないため、すべての製品をこのクラスで修正および修正する必要があります。調整、工場方式モデルは複数の工場を持ち、各工場で一つの製品を生産するモデルで、新しい製品を追加する必要がある場合は、直接新しい工場を作成でき、他の工場内で変更する必要はありません。それは開閉の原則と一致しています。 2. ファクトリ メソッド パターンの長所と短所利点:
欠点:
を使用して解決できます (Abstract Factory Pattern については次の記事で説明します)
4. ファクトリ メソッド パターン コードの実装
製品には、コカ・コーラ、ペプシ・コーラ、無糖コーラが含まれます。
単純な工場パターンでは、3 つの製品を生産できるコーラ工場は 1 つだけあります。ファクトリー・メソッド・パターンでは、 、対応する製品を生成する複数の工場が存在する可能性があります:
Cola Factory (メイン工場として理解できます)Pepsi-Cola Factory:
ペプシ コーラの生成 #コカ コーラ工場: コカ コーラの生成
#無糖コーラ工場: 無糖コーラの生成
コーラの製造方法:
/** * 提供了产品的接口 */public interface Cola { //生产可乐的方法 public void cola();}
Cola Abstract Factory:
/** * 可乐抽象工厂(可以理解成可乐总厂,旗下还有很多分厂) */public interface ColaFactory { public Cola newCola();}
3 種類のコーラの製造方法:
コーラ Coke:/** * 产品名称:可乐可乐,实现了产品的接口 */public class CocaCola implements Cola{ @Override public void cola() { System.out.println("开始生产可口可乐"); }}ペプシコーラ:
/** * * 产品名称:百事可乐,实现了产品的接口 */public class PepsiCola implements Cola{ @Override public void cola() { System.out.println("开始生产百事可乐"); }}
/* * 产品名称:无糖可乐,实现了产品的接口 */public class SugarFreeCola implements Cola{ @Override public void cola() { System.out.println("开始生产无糖可乐"); }}3 つの製品が対応します 3 つの工場:
コカ・コーラを生産する工場: /**
*
* 具体工厂1:可口可乐工厂
*/public class CocaColaFactory implements ColaFactory{
@Override
public Cola newCola() {
System.out.println("我是可乐工厂下面的可口可乐工厂");
return new CocaCola();
}}
ペプシ・コーラを生産する工場:
/** * * 具体工厂2:百事可乐工厂 */public class PepsiColaFactory implements ColaFactory{ @Override public Cola newCola() { System.out.println("我是可乐工厂下面的百事可乐工厂"); return new PepsiCola(); }}
無糖コーラを生産する工場:
/* * 具体工厂3:无糖可乐工厂 */public class SugarFreeColaFactory implements ColaFactory{ @Override public Cola newCola() { System.out.println("我是可乐工厂下面的无糖可乐工厂"); return new SugarFreeCola(); }}
コークスの製造方法
コークス工場 (以下に複数の小さな工場があります) 工場)
3 種類のコークを生産するための 3 つの方法 (Coke インターフェイスの実装)
3 つのコーク工場 (3 種類のコークを生産するため、コーラ工場インターフェース)
public class Test { public static void main(String[] args) { try{ //新建一个可乐方法对象 Cola a; //新建一个可乐工厂对象 ColaFactory af; //告诉可乐工厂,你需要什么可乐,并且通知对应的分工厂 af = (ColaFactory) new PepsiColaFactory(); //执行对于生产方法 a = af.newCola(); a.cola(); }catch (Exception e ){ System.out.println(e.getMessage()); } }}
たとえば、今ペプシが必要な場合は、af でペプシ工場を渡します: 我是可乐工厂下面的无糖可乐工厂
开始生产无糖可乐
で渡された場合:
我是可乐工厂下面的可口可乐工厂 开始生产可口可乐
以上がJavaファクトリメソッドパターンの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。