簡單工廠模式是類的建立模式,又稱靜態工廠方法模式。由一個工廠對象決定哪種產品實例。工具
工廠模式的幾種形態:
spa
簡單工廠(Simple Factory)模式設計
工廠方法(Factory Method)模式:又稱多態性工廠(Polymorphic Factory)模式或虛構構造子模式對象
抽象工廠(Abstract Factory)模式:又稱工具箱模式繼承
簡單工廠模式的簡略類圖接口
簡單工廠模式的實現:產品
在真實系統中,產品的層次結構可能很複雜。擴展
這個時候簡單工廠採用以不變應萬變的策略,一概使用同一個工廠方法
Factory類到product類的虛線表明建立(依賴)關係;Client到其餘類的連線是通常依賴關係。im
好處:設計簡單,產品類的等級結構不會反應到工廠類中去,從而產品類結構改變不會影響到工廠類
缺點:新產品加入,必然致使修改工廠
使用Java接口或者Java抽象類
若是模式所產生的具體產品彼此之間沒有共同商業邏輯,抽象產品角色能夠由接口扮演;
相反, 這些具體的產品類之間有共同商業邏輯,那麼就應該講共同邏輯移動到抽象角色中,這就意味着抽象角色應當由抽象類來扮演。
在一個類型的等級結構中,共同的代碼應該儘可能上移
綜上,簡單工廠模式的優缺點:
優勢:模式的核心是工廠類。這個類含有必要的判斷邏輯,能夠決定何時建立哪個產品實例。而客戶端則能夠免除直接穿件產品對象的責任,而僅僅負責「消費」產品。簡單工廠模式經過這種作噶實現了對責任的分割。
缺點:正如前面所提到的,當產品類由負複雜的多層次等級結構時,工廠類只有他本身。以不變應萬變就是模式的缺點。
這個工廠類集中了全部產品建立邏輯,造成了一個無所不知的去全能類,有人將其稱爲上帝類(God Class)。若是這個全能類表明的是農場的一個具體的園丁的話,那麼這個園丁就須要對全部的產品負責,是關鍵人物。若是何時不能正常工做了,整個農場就會受到影響。
將這麼多邏輯集中在一個類裏面的另外一個缺點是當產品有不一樣的接口種類時,工廠類須要判讀單在何時建立某種產品,時機判斷和哪種具體產品的邏輯判斷混在一塊兒,未來功能擴展會很困難。這一缺點在工廠方法模式中獲得克服。
因爲簡單工廠模式使用靜態方法做爲工廠方法,而靜態方法沒法有子類繼承,所以,工廠角色沒法給予繼承等級結構。這一缺點在工廠方法模式中的到克服。