設計模式(Design Patterns)筆記之一:Abstract Factory

http://dev.csdn.net/develop/article/14/14390.shtm

前言:呵呵,拿了第一頁出來,還沒反應過來,就被兄弟們慘罵一頓,前面實在象目錄,^_^, 不過大家別急嘛,好歹給我點休息時間。

不多說,下面開始記筆記!^_^

設計模式(Design Patterns)筆記之一:Abstract Factory

定義:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。提供創建對象的接。

工廠模式是我們最常用的模式,是用來創建對象的,它就相當於創建對象的new。
例如我們有一個類Example,我們要創建Example的對象:

Example example=new Example();

Example example=new Example(參數);

如果創建Example時做的事情不是如賦值這樣簡單的事,可能是很長一段代碼,如果也寫入構造函數中,那明顯的就違背了面向對象的原則.
我們需要將創建實例的責任與使用實例的責任分開, 使得

Example example=new Example(參數);

就是簡單的責任:使用Example這個實例;而創建Example的任務就交給了Factory工廠模式.

按照傳統方法,我們如果需要繼承Example類,生成MyExample,就需要定義Example爲Interface,然後,不斷繼承這個Interface,生成許多子類,造成以後代碼維護是如此的困難。

如果,我們開始就採用了工廠模式,也許就沒有這麼多的煩惱了。

我們生成一個Factory,它專門負責生成Example的實例。
public class Factory {
public static Example getIntance() {
......
if(flag == 1)
return new MyExample();
if(flag == 2)
return new YourExample();
}
}

然後,那麼在你的程序中,如果要實例化MyExample時.就使用

Example example=Factory.getIntance();//還有其它標誌,不具體寫了。

具體使用:
工廠模式有以下三種:
1. 簡單工廠(Simple Factory)
2. 工廠方法(Factory Method);
3. 抽象工廠(Abstract Factory)。

我們先看一段代碼
public abstract class Factory{
  public abstract MyExample creator();
  public abstract YourExample creator();
}

public class FirstFactory extends Factory{
  public MyExample creator(){
    ......
  }
  public YourExample creator(){
    ......
  }
}

public class SecondFactory extends Factory{
  public MyExample creator(){
    ......
  }
  public YourExample creator(){
    ......
  }
}

這裏,我們需要創建多個對象,複雜性提高,於是需要採用Abstract Factory來封裝共同屬性和方法,而將不同的屬性和方法通過子類來實現。

簡而言之,工廠模式的目的就是用來實現實例分發。

工廠模式中幾種類型的一些差別:
簡單工廠模式是根據參數來決定產生實例;
簡單工廠模式, 核心是一個實類;
工廠方法模式的核心是一個抽象工廠類;
工廠方法模式可以允許很多實的工廠類從抽象工廠類繼承下來, 從而可以在實際上成爲多個簡單工廠模式的綜合;
工廠方法一般只創建一個實例,而Abstract Factory創建多個實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章