這裏簡單理解:簡單工廠又叫靜態工廠;是將工廠方法的方法體加上static 編程
問題來了,什麼是開閉原則?又有哪些設計原則呢? 設計模式
開閉原則就是說對擴展開放,對修改關閉。在程序須要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。因此一句話歸納就是:爲了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,咱們須要使用接口和抽象類 架構
面向對象設計(Object-Oriented Design,OOD) 學習
(此處先了解下,隨着知識的深刻在進行學習) 網站
單一職責: spa
開閉原則:對擴展開放,對修改關閉 設計
依賴倒置:多用多態,面向接口/抽象編程;是開閉原則的基礎,具體內容:針對接口編程,依賴於抽象而不依賴於具體。 對象
里氏替換法則:是對"開-閉"原則的補充。實現"開-閉"原則的關鍵步驟就是抽象化;,任何基類能夠出現的地方,子類必定能夠出現 blog
接口隔離:使用多個隔離的接口,比使用單個接口要好。仍是一個下降類之間的耦合度的意思,從這兒咱們看出,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發,爲了升級和維護方便。因此上文中屢次出現:下降依賴,下降耦合。 繼承
迪米特法則(最少知道原則):爲何叫最少知道原則,就是說:一個實體應當儘可能少的與其餘實體之間發生相互做用,使得系統功能模塊相對獨立。
注意:FactoryBean和BeanFactory是有區別的;前者是工廠實體類,後者是實體類的工廠
開閉原則:對擴展開放,對修改關閉
此時再去加一個新的動物Monkey就須要修改工廠源代碼
在該網站來畫類圖加深理解;或者用StarUML軟件
1.工廠方法:
首先建立抽象產品
而後建立具體的產品
定義抽象工廠
定義具體工廠:方式一,不推薦,可是寫法簡單
定義具體工廠:方式二,推薦,可是代碼複雜點
調用具體工廠
修改成簡單工廠simplefactory,簡單工廠又稱靜態工廠.將工廠裏的方法改成static
基於簡單工廠開始改寫:
第一步:建立抽象類產品/接口
第二步:建立具體產品
第三步:定義抽象工廠
第四步:調用具體工廠
第一步:建立抽象產品/接口
第二步:建立具體產品
第三步:定義抽象工廠(抽象工廠方法還有對工廠進行抽象)
第四步:調用具體工廠
代碼演示:
解釋:接口能夠多繼承;類是單繼承類,多實現接口
寶馬抽象類沒有重寫完接口的方法,經過子類來完成額外功能得附加,減小了代碼的變更
對高配和低配工廠的抽象;這也是抽象工廠方法的核心