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

worldblog發表於2007-12-12
設計模式(Design Patterns)筆記之一:Abstract Factory (轉)[@more@]

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

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

設計(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建立多個例項。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991594/,如需轉載,請註明出處,否則將追究法律責任。

相關文章