単純な工場モード
クラス図
工場クラスを通じて条件で対応するオブジェクトを作成します
//ビジネス関数パブリックインターフェイスICalculation {double getResult(double numa、double numb); } public class calcaddはiCalculation {@override public double getResult(double numa、double numb){system.out.println( "add"); numa + numbを返します。 }} public class calcsubtract imalculation {@override public double getResult(double numa、double numb){system.out.println( "suptraction"); numa -numbを返します。 }}/**単純な工場モードに焦点を当てます。オブジェクト作成*工場クラスを作成して、同じインターフェイスを実装するか、相続関係を実装するいくつかのクラスのインスタンスを作成します*/public class test4simple {public static void main(string [] args){// string operation = "/";文字列操作= "+"; //文字列操作= " - "; //文字列操作= "*"; double numa = 182、numb = 33; ICalCulation CreateCalc = calcsimpleFactory.createcalc(操作); double result = createcalc.getResult(numa、numb); system.out.println(result); }}単純な工場の欠陥:単純な工場が製品を作成する場合、対応するパラメーターを渡す必要があります。パスが正しくない場合、オブジェクトを取得できません。
改善:さまざまな製品カテゴリを複数の方法で作成します
パブリッククラスCalcMultipleFactory {public static iCliculation producteadd(){return new calcadd(); } public static iCalculation ducesSubtract(){return new calcsubtract(); } public static Icliculation productemultiply(){return new calcmultiply(); } public static iCalculation ructuedivide(){return new calcdivide(); }} public class test4multiple {public static void main(string [] args){double numa = 182、numb = 33; ICALCULATION CREATECALC = CalcMultipleFactory.ProduceAdd(); double result = createcalc.getResult(numa、numb); system.out.println(result); createcalc = calcmultiplefactory.producesubtract(); result = createcalc.getResult(numa、numb); system.out.println(result); createcalc = calcmultiplefactory.producesubtract(); result = createcalc.getResult(numa、numb); system.out.println(result); createcalc = calcmultiplefactory.producemultiply(); result = createcalc.getResult(numa、numb); system.out.println(result); createcalc = calcmultiplefactory.producedivide(); result = createcalc.getResult(numa、numb); system.out.println(result); }}抽象的な工場パターン
抽象工場、物理工場、抽象製品、物理的な製品抽象工場:製品を作成する抽象的な方法を定義するいくつかの概念があります。エンティティファクトリー:特定の製品抽象製品作成:インターフェイスまたはベースクラスエンティティ製品:特定の機能、または派生クラス図を実装する
// Abstract Product1 public Interface iproduct1 {public void show(); } // Abstract Product2 public interface iproduct2 {public void show(); } // entity product1 public class product1を実装しますiproduct1 {public void show(){system.out.println( "作成されたタイプ1製品"); }} // entity product2 public class product2を実装しますiproduct2 {public void show(){system.out.println( "作成されたタイプ2 product"); }} / * * 1a 1bは、同じ製品階層構造で産物1に属しますSystem.out.println( "これは製品1:製品A"); }} public class gradeProduct1b extends ford1 {@Override public void show(){super.show(); System.out.println( "これは製品1:製品Bの下にあります"); }} public class gradeProduct1b extends ford1 {@Override public void show(){super.show(); System.out.println( "これは製品1:製品Bの下にあります"); }} public crass gradeProduct2a extends product2 {@override public void show(){super.show(); System.out.println( "これは製品2:製品A"); }} public crass gradeproduct2b extends product2 {@override public void show(){super.show(); System.out.println( "これは製品2:製品Bの下にあります"); }} //抽象工場は異なる抽象製品を作成しますパブリックインターフェイスifactory {public iproduct1 createproduct1a(); //クラス1製品モデル//クラス1製品ファクトリー物理製品を作成します。リターンタイプは抽象製品ですパブリッククラスの工場はifactory {public iproduct1 createproduct1a(){return new GradeProduct1a(); } public iProduct1 createProduct1b(){return new GradeProduct1b(); } public iProduct2 createProduct2a(){return new GradeProduct2a(); } public iProduct2 createProduct2b(){return new GradeProduct2b(); }} /**抽象ファクトリーパターン:関連するまたは相互依存オブジェクトのセットを作成するために使用**プロセス:抽象工場、物理工場は製品を生産します*抽象製品、物理製品は製品機能を実現します*デメリット:製品を追加する必要がある場合(抽象的およびエンティティで構成される)、工場は[] /公開されたbowid bioid in main in mas新しい工場(); iProduct1 product1a = factory.createproduct1a(); Product1a.show(); iProduct1 product1b = factory.createproduct1b(); Product1b.show(); iProduct2 product2a = factory.createproduct2a(); Product2a.show(); iProduct2 product2b = factory.createproduct2b(); Product2b.show(); }}