1,注意靜态工廠(簡單工廠模式)、工廠方法、抽象工廠的差別
靜态工廠是根據用戶端傳入的參數,使用工廠類來建立相應的産品接口的具體實作子類對象。比如,需要需要建立一個工具類,該工具類是為了調用外部系統,但外部系統的版本有差異,需要根據不同版本的外部系統,生成相應的工具類。這個時候如果外部系統不同版本的數量比較少,此時使用靜态工廠是合适的。
注意靜态工廠模式隻有一個工廠類。
工廠方法是每一個産品都有一個工廠類,存在一個工廠類父類,用戶端直接建立具體的工廠類,然後生産相應的産品。工廠方法把簡單工廠的内部邏輯判斷移到了用戶端進行,由用戶端決定使用哪一個工廠類。
工廠方法隻有一個抽象産品類,是以具體的工廠類隻能生産一種産品。
抽象工廠模式在工廠方法模式下進一步擴充以實作一般化,抽象工廠模式中具有多個抽象産品類,這樣具體工廠就可以生産多個産品。用戶端通過生産具體工廠對象,然後調用工廠對象的不同方法來實作生産不同的産品。工廠方法時具體工廠類對應具體一種産品類,而抽象工廠模式是具體工廠類的某個函數對應一種具體的産品類
應用場景
第一種情況是對于某個産品,調用者清楚地知道應該使用哪個具體工廠服務,執行個體化該具體工廠,生産出具體的産品來。Java Collection中的iterator() 方法即屬于這種情況。
第二種情況,隻是需要一種産品,而不想知道也不需要知道究竟是哪個工廠為生産的,即最終選用哪個具體工廠的決定權在生産者一方,它們根據目前系統的情況來執行個體化一個具體的工廠傳回給使用者,而這個決策過程這對于使用者來說是透明的。
關于這三者的更多資訊見:
http://blog.csdn.net/sinat_35512245/article/details/54890711
抽象工廠的執行個體請參考:
http://www.cnblogs.com/lilin0719/p/5313886.html