Factory Method Pattern(工廠方法模式)——莫勇鵬老師

Factory Method Pattern(工廠方法模式)

在工廠方法模式中,父類負責定義建立對象的公共接口,而子類則負責生成具體的對象,這樣作的目的是將類的實例化操做延遲到子類中完成,即由子類來決定究竟應該實例化(建立)哪個類。ide

 

工廠方法模式的UML類圖spa

 

Product:產品角色對象

定義產品的接口。接口

 

ConcreteProduct:真實的產品ci

實現接口Product類。產品

 

Creator:工廠角色ast

聲明工廠方法(FactoryMethod),返回一個產品。class

 

ConcreteCreator:真實的工廠擴展

實現FactoryMethod工廠方法,由客戶調用,返回一個產品的實例。程序

 

Java實例——擴展了的手機工廠

 

手機接口:

public interface Mobile {

       public void call();

}

 

手機工廠接口:

public interface MobileFactory {

       public Mobile produceMobile();

}

 

摩托羅拉手機實現手機接口:

public class Motorola implements Mobile{

 

       @Override

       public void call() {

              // TODO Auto-generated method stub

              System.out.println("摩托羅拉手機");

       }

 

}

 

諾基亞手機實現手機接口:

public class Nokia implements Mobile{

 

       @Override

       public void call() {

              // TODO Auto-generated method stub

              System.out.println("諾基亞手機");

       }

 

}

摩托羅拉工廠實現了生產手機的方法,返回摩托羅拉手機:

public class MotorolaFactory implements MobileFactory{

 

       @Override

       public Mobile produceMobile() {

              // TODO Auto-generated method stub

              System.out.print("摩托羅拉工廠製造了");

              return new Motorola();

       }

 

}

 

諾基亞工廠實現了生產手機的方法,返回諾基亞手機:

public class NokiaFactory implements MobileFactory{

 

       @Override

       public Mobile produceMobile() {

              // TODO Auto-generated method stub

              System.out.print("諾基亞工廠製造了");

              return new Nokia();

       }

 

}

 

客戶程序:

public class Client {

       public static void main(String args[]){

              MobileFactory mf;

              Mobile m;

              mf=new MotorolaFactory();

              m=mf.produceMobile();

              m.call();

              mf=new NokiaFactory();

              m=mf.produceMobile();

              m.call();

       }

}

 

輸出結果:

摩托羅拉工廠製造了摩托羅拉手機

諾基亞工廠製造了諾基亞手機

 

應用情景:

1.      類不知道本身要建立哪個對象。

2.      類用它的子類來指定建立哪一個對象。

3.      客戶須要清楚建立了哪個對象。

相關文章
相關標籤/搜索