前兩種用的比較多
六。工廠方法模式(Factory Method)
接口抽象???指的是多態指針嗎
面向接口的變成???一個對象類應該聲明成對象或者接口
接口
15行依然是編譯時的細節依賴
——解決:試圖用某種方法返回對象
這樣修改后依然是編譯時依賴
想到==>虛函數是運行時依賴
把變化交給SplitterFactory這個未來
每個具體類都有對應的工廠——>多態指針就有了著落
注:此處是多態new
MainForm再也沒有具體的依賴 此類以外的不用管
實際上 ?依賴變化沒法消滅 只是把它趕到某個局部(把變化比作一只貓,應該想辦法把它關進籠子里 而不是讓他跳來跳去)
關鍵點:把實例化延遲
關鍵點:參數一致
七。抽象工廠(Abstract Factory)
任務假設:數據訪問層;創建一系列對象
問題:只支持一種數據庫==>對應的類型應該變化
設計:
這幾個類都要有工廠
實際開發中具體類和具工廠應該放在兩個不同文件去寫
問題:會有不同數據庫的類互相調用的情況
解決:把三個工廠合成一個
抽象工廠可以理解為家族工廠***
IDBFactor就是這個接口
IDBFactor負責創建一系列:IDBConection,IDBComond 無需提供具體類
藍色:第一種變化 綠色:第二種變化
變化點不同系列
關鍵點:同一系列對象可依賴;(可以把工廠方法模式是抽象工廠的特例理解為)
八。原型模式(Prototype)
和factory method解決的問題一樣;是其變體
合并工廠和業務抽象類
通過克隆(深克隆)自己來創建對象
下幾個類同第一個
具體工廠也就不需要了
關鍵點:深克隆(淺克隆會改變原型對)
跟工廠方法的最大區別在于:用工廠模式創建對象只需要簡單幾個步驟,還是要考慮復雜的中間狀態