1. 程式人生 > >JAVA工廠方法設計模式:Factory Method

JAVA工廠方法設計模式:Factory Method

wangking717 寫道 工廠方法模式(Factory Method):定義一個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。這樣進一步抽象化的好處使得系統在不修改具體工廠的情況下進行無限擴充套件,符合設計模式的開閉原則,即對擴充套件開放,對修改關閉。

工廠方法經常用在以下兩種情況中:

1. 呼叫者清楚地知道應該使用哪個具體工廠服務,例項化該具體工廠,生產出具體的產品來。Java Collection中的iterator() 方法即屬於這種情況。

2. 只是需要一種產品,而不想知道也不需要知道究竟是哪個工廠為生產的,即最終選用哪個具體工廠的決定權在生產者一方,它們根據當前系統的情況來例項化一個具體的工廠返回給使用者,而這個決策過程這對於使用者來說是透明的。

來看看類圖吧:


這裡舉MOBILE的例子:

產品介面:

public interface Mobile{
    public void call();
}

 產品1:

public class Nokia implements Mobile{
       public void call(){
              System.out.println("Nokia producted");
       }
}

 產品2:

public class Motorola implements Mobile{
       public void call(){
              System.out.println("Motorola producted");
       }
}

工廠介面:

public interface MobileFactory{
       public Mobile getMobile();
}

產品1工廠:

public class NokiaFactory implements MobileFactory{
       public Mobile getMobile(){
              return new Nokia();
       }
}

 產品2工廠:

public class MotorolaFactory implements MobileFactory{
       public Mobile getMobile(){
              return new Motorola();
       }
}

TestCase:

public class Test{
       public static void main(String[] args){
              MobileFactory mbf = new NokiaFactory();
              Mobile mb=mbf.getMobile();
              mb.call();
              mbf= new MotorolaFactory();
              mb=mbf.getMobile();
              mb.call();
       }
}