Factory Methodパターンを言う前に、まず、単純なファクトリパターンを見てください。ファクトリメソッドパターンは、単純な工場は、いくつかの機能強化をしたという事実です。
シンプルなファクトリパターン:クラスの他のインスタンスの生産に特別なクラスがあり、これらの例の生産は、共通の親クラスを持っています。ビットのような私達とこの多型。
例:
私たちは、マウスの工場を持っている場合は、工場出荷時は、両方のマウスレノボ、エイサーを生成することができ、マウスを生成することができます。
コード次のように:
1、工場マウス(マウスは、LenovoとAcerのマウスを生成することができます)
public class MouseFactory {
/**
* 生产一个鼠标
* @param i
* @return
*/
public Mouse createMouse(int i){
Mouse mouse = null;
switch (i){
case 1:
mouse = new LenovoMouse();
break;
case 2:
mouse = new AcerMouse();
break;
}
return mouse;
}
}
2、マウスインタフェース(のgetName()メソッド)
public interface Mouse {
void getName();
}
3、レノボマウス実装クラス(マウスは、関連付けを生成することができ、マウスのインターフェースを実装します)
public class LenovoMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是联想鼠标");
}
}
4、エイサー実装クラスマウス(マウスインターフェース実装、エイサーマウスを生成することができます)
public class AcerMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是宏碁鼠标");
}
}
5、クライアント(マウスを必要とする、あなたはまた、Acerのマウスを購入することができますLenovoのマウスを購入することができます)
@SpringBootTest
class FactoryApplicationTests {
@Test
void contextLoads() {
MouseFactory factory = new MouseFactory();
Mouse mouse = factory.createMouse(2);
mouse.getName();
}
達成されても、このような単純な工場プラントマウスレノボとエイサーマウスを生成するように、それぞれ、1および2を通過することができます。
次は、単純な植物に基づいFactory Methodパターンを見てください。
Factory Methodパターン:他のクラスのインスタンスの生産に特別なインタフェースの定義、サブクラスは生産の特定のインスタンスのどのクラスを決めましょう。
例:
マウスの工場は、子会社2社、マウスを関連付けるために使用される生産に特化レノボマウスの工場が開かれ、他のは、特殊なAcerのマウスの生産のためのAcerのマウスの工場です。
:コードは次のように
1、マウスファクトリインタフェース:
public interface MouseFactory {
Mouse createMouse();
}
(レノボマウスの産生のための)2、Lenovoのマウス工場
public class LenovoMouseFactory implements MouseFactory {
@Override
public Mouse createMouse() {
return new LenovoMouse();
}
}
3、Acerのマウス施設(エイサーマウスを生成するために使用されます)
public class AcerMouseFactory implements MouseFactory {
@Override
public Mouse createMouse() {
return new AcerMouse();
}
}
以下に再現のような単純なマウス型植物と、:
4、マウスのインターフェースである(のgetName()メソッドがある)は
public interface Mouse {
void getName();
}
5、レノボマウス実装クラス(マウスは、関連付けを生成することができ、マウスのインターフェースを実装します)
public class LenovoMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是联想鼠标");
}
}
6、エイサー実装クラスマウス(マウスインターフェース実装、エイサーマウスを生成することができます)
public class AcerMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是宏碁鼠标");
}
}
7、クライアント(マウスを必要とする、あなたはまた、Acerのマウスを購入することができますLenovoのマウスを購入することができます)
@SpringBootTest
class FactoryApplicationTests {
@Test
void demo(){
LenovoMouseFactory lenovoMouseFactory = new LenovoMouseFactory();
Mouse lenovoMouse = lenovoMouseFactory.createMouse();
lenovoMouse.getName();
AcerMouseFactory acerMouseFactory = new AcerMouseFactory();
Mouse acerMouse = acerMouseFactory.createMouse();
acerMouse.getName();
}
}
我々はマウスレノボ、購入するLenovoの工場を購入したい場合我々は、別の工場で異なるインスタンスを取得することができます。AcerはAcerの植物を買いに行った後、マウスを購入します。
したがって、我々はAsusのマウスをしたい場合、あなたはASUS ASUSマウスを生産する工場を建設、Factory Methodパターンを実現しました。
記事は参考になりました場合は、〜ヨーヨーのようなポイントに集中することを忘れないでください
、彼らが学ぶことの毎日の技術的な記事を押し、<それを愛する>私の社会的関心の番号へようこそ。