前言
工廠模式算是自己接觸到的最早的一個設計模式了,大二的時候在網易公開課上學習Java基礎。從那時起到現在工作快2個月了,也在各大框架上接觸工廠模式,在看《Head First設計模式》的時候,越來越覺得這本書不適合我了,不說題外話開始整體吧。
簡單工廠模式(Simple Factory Pattern)
簡單工廠模式又稱爲靜態工方法模式,這算是我覺得目前最好理解的一種設計模式了。簡單工廠方法並不在我們熟知的23種設計模式之中,根據網絡上的說法,這更像一種編程習慣。
定義:
你只需傳入一個正確的參數,就能按照你的意願創建出一個對象。例如:我想要一個NewDuck對象,那我只要傳入一個"NewDuck"字符串即可。
Duck和實現類略
public class DuckFactory {
/**
* 創建鴨子
*
* @param className 想創建的類名
* @return 想創建類
*/
public Duck createDuck(String className) {
Duck duck;
if ("NewDuck".equals(className)) {
//創建NewDuck類
duck = new NewDuck();
} else {
//創建GaGa類
duck = new GaGa();
}
return duck;
}
}
根據上面的代碼,我簡單畫一下UML的類圖(剛開始用VS畫的有點醜,別介意)
通過FactoryDuck可以創建出Duck的子類——NewDuck和GaGa,通過箭頭也可以看出,DuckFactory和子類的關係是依賴關係,當我們需要增加新的子類的時候,就需要對工廠類進行修改,當子類數量達到一定程度的時候,邏輯判斷和維護就會出現一定困難了。當所需要創建的子類類型少的時候,就可以使用簡單工廠模式了。