2 典型實現
3 例項
4 簡化
5 主要優點
6 主要缺點
7 適用場景
8 總結
簡單工廠模式不屬於gof23種設計模式之一,但是實際中用途廣泛,並且可以作為學習「工廠方法模式」以及「抽象工廠模式」的基礎。在簡單工廠模式中,工廠類提供乙個建立產品的工廠方法,用於建立各種產品。客戶端只需傳入對應的引數,利用該方法即可根據傳入引數的不同返回不同的具體產品物件。
簡單工廠模式(****** factory pattern):定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。
因為在簡單工廠模式用於建立例項的方法是靜態的方法,因此簡單工廠模式又被稱為靜態工廠方法模式,它屬於類建立型模式。
簡單定義如下:
inte***ce
product
實現抽象產品角色介面:
class
concreteproducta
implements
product
}class
concreteproductb
implements
product
}
由於工廠角色需要根據傳入引數不同返回不同的具體產品,因此通常使用列舉作為傳入引數,先定義具體產品的列舉類:
enum concreteproduct
接著定義靜態工廠方法:
class
factory
}}
根據引數的不同建立不同的具體產品例項並返回。
傳入不同引數即可獲取不同的具體產品:
product product = factory.
get(concreteproduct.a)
;product.
method()
;product = factory.
get(concreteproduct.b)
;product.
method()
;
某公司需要開發乙個圖表庫,該圖表庫可以提供各種不同外觀的圖表,例如柱狀圖,折線圖等等,使用簡單工廠模式對其進行設計。設計如下:
**如下:
//抽象產品類
inte***ce
chart
//具體產品類,柱狀圖
class
histogramchart
implements
chart
public
void
display()
}//具體產品類,餅狀圖
class
piechart
implements
chart
public
void
display()
}//具體產品類,折線圖
class
linechart
implements
chart
public
void
display()
}//工廠類
class
factory}}
enum charts
測試:
public
static
void
main
(string[
] args)
為了簡化設計,可以將抽象產品類與工廠類合併,將靜態方法移至抽象產品類中:
這樣可以通過抽象產品類的靜態方法獲取子類物件,優化**如下:
設計模式(四) 工廠模式 簡單工廠
概述 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。但由於經常被使用,所以人民經常把它放到工廠模式裡面。定義 簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。實現 抽象類 產品 public abstract class product 具體的產品 public class con...
設計模式 簡單工廠模式(學習筆記)
簡單工廠事實上不是乙個設計模式,比較像一種程式設計習慣!首先看一下 從 中理解這個程式設計習慣。舉個做披薩的樣例 pizza類 public inte ce pizza詳細的披薩cheesepizza public class cheesepizza implements pizza overrid...
設計模式 學習筆記 簡單工廠模式
從接觸程式設計到現在已經很久了,從最早的面向過程到物件導向,後來演算法的學習,但是一直沒有接觸設計模式。前幾周,我申請的 大話設計模式 採購下來了,剛好藉著這個讀書的機會,把自己的學習筆記記錄下來,希望以後自己寫專案的時候可以應用到這些模式思想。1 運算的基類,所有的運算都必須繼承自這個類 基類,所...