デザインパターンの工場パターン、単純なファクトリパターン

デザインパターンの工場パターン、単純なファクトリパターン

工場出荷時のパターンの起源:

我々は、使用のオブジェクト、新しい操作の使用を作成する場合。あなたは、新しい会議を作成するために、複数のオブジェクトを使用している場合。したがって、このモデルは、工場、新しいオペレーティング・エージェントをモデル化するために使用されます。工場モデルの起源によると、私たちは、工場出荷時のモデルは、スキーマを作成属していることがわかります。オブジェクトを作成するための最良の方法を提供します。

出典:凱歌のJava(kaigejava)

主力工場のパターン分類:

document_image_rId9.png

シンプルなファクトリパターン、Factory Methodパターン、Abstract Factoryパターン

シンプルなファクトリパターン:

シンプルなファクトリパターンは、23個のデザインパターンに属していません。また、静的なファクトリメソッドとして知られている、シンプルなファクトリパターンは、工場出荷時のモデルファミリーでモデルとして使用するのが最も簡単です。それはまた別の植物の実現の特別なモードとして理解することができます。

どのように理解するには?

たとえば、次のファクトリクラス、抽象クラスの製品。

実際の生活の例:ラーメン店、我々は麺よりも多くを生成することができます。

以下のような:トマト卵麺、牛肉麺、麺、笛顔、biangbiang表面と乾燥麺を作ることができ麺。

私たちは、このシナリオをシミュレートする必要があります。

のは、プロジェクトの構造を見てみましょう:

document_image_rId10.png


説明:

1:麺インタフェースクラス

2:特定の実装クラスの麺

3:シンプルなファクトリクラス(麺オブジェクト)

4:テストのタイプ

のは、麺のインタフェースクラスを見てみましょう。

INoodlesInterface

document_image_rId11.png

:内部トマトと卵麺オブジェクト - 私たちは見て、麺の実装クラスを取ります

パブリッククラス  TomatoAndEggNoodlesは  実装  INoodlesInterfaceを{

   プライベート  文字列  noodlesName

   パブリック  TomatoAndEggNoodles(){}

   公共  TomatoAndEggNoodles(文字列noodlesName){

       これnoodlesName  = noodlesName。

   }

   @オーバーライド

   public void noodlesdescription() {

       System.out.println("大爷,您的"+this.noodlesName+"价格为:10元。");

   }

}

document_image_rId12.png

其他具体面条实现类里面类似。这里就不一一贴出来了。

我们来看看面馆对象:

document_image_rId13.png

里面由三部分:

菜单部分、根据菜单序号制作面条、根据面条名称制作面条。

我们来看看根据菜单序号制作面条的:

public  static INoodlesInterface makeNoodlesByMenuType(int noodletType){

   switch (noodletType){

       case NOODLES_TYPE_1:

           return new TomatoAndEggNoodles("西红柿鸡蛋面");

       case NOODLES_TYPE_2:

           return new HandPulledNoodleSoupWithBeef("牛肉拉面");

       case NOODLES_TYPE_3:

           return new HandPulledNoodleSoupWithBeef("刀削面");

       case NOODLES_TYPE_4:

           return new NoodleWithPork("哨子面");

       case NOODLES_TYPE_5:

           return  new BiangBiangNoodles("biangbiang面");

       case NOODLES_TYPE_6:

           return new HotAndDryNoodles("热干面");

       default:

           return  new HotAndDryNoodles("热干面");

   }

}

document_image_rId14.png

另一个方法类似。

查看测试类:

document_image_rId15.png

查看运行结果:

document_image_rId16.png

运行结果,达到我们预期的。

现在我们来总结下简单工厂模式:

简单工厂模式几个角色:

document_image_rId17.png

1:共有的抽象父类或者接口。如:司小司面馆的面条接口对象

2:继承或是实现该接口的具体子类。如:西红柿鸡蛋面、biangbiang面等

3:创建对象的简单工厂类。如:司小司的面馆

イベントのトリガ:

document_image_rId18.png

メニューや麺名前の数によって生成トリガークラスファクトリオブジェクト。

シンプルなファクトリパターンの機能を見てみましょう:

document_image_rId19.png

クラスを通して。具象クラスは、文switch文が判断されると言われ、これに対応する製品を作成している場合を使用して、抽象クラスのインターフェイスかどうかを作成するための重要な方法です。

連絡先凱歌 - 「凱歌のJava(kaigejava)

個人ブログ:www.kaigejava.com

その中で、この重要なメソッドの作成は、通常は静的です。だから、単純なファクトリパターンは、静的な工場として知られています。



おすすめ

転載: blog.51cto.com/kaigejava/2432367