前兩種用的比較多
六弥奸。工廠方法模式(Factory Method)
接口抽象?奋早?其爵?指的是多態(tài)指針嗎
面向接口的變成冒冬??摩渺?一個(gè)對(duì)象類應(yīng)該聲明成對(duì)象或者接口
15行依然是編譯時(shí)的細(xì)節(jié)依賴
——解決:試圖用某種方法返回對(duì)象
這樣修改后依然是編譯時(shí)依賴
想到==>虛函數(shù)是運(yùn)行時(shí)依賴
把變化交給SplitterFactory這個(gè)未來(lái)
每個(gè)具體類都有對(duì)應(yīng)的工廠——>多態(tài)指針就有了著落
注:此處是多態(tài)new
MainForm再也沒(méi)有具體的依賴 此類以外的不用管
實(shí)際上 ?依賴變化沒(méi)法消滅 只是把它趕到某個(gè)局部(把變化比作一只貓简烤,應(yīng)該想辦法把它關(guān)進(jìn)籠子里 而不是讓他跳來(lái)跳去)
關(guān)鍵點(diǎn):把實(shí)例化延遲
關(guān)鍵點(diǎn):參數(shù)一致
七。抽象工廠(Abstract Factory)
任務(wù)假設(shè):數(shù)據(jù)訪問(wèn)層摇幻;創(chuàng)建一系列對(duì)象
問(wèn)題:只支持一種數(shù)據(jù)庫(kù)==>對(duì)應(yīng)的類型應(yīng)該變化
設(shè)計(jì):
問(wèn)題:會(huì)有不同數(shù)據(jù)庫(kù)的類互相調(diào)用的情況
解決:把三個(gè)工廠合成一個(gè)
抽象工廠可以理解為家族工廠***
IDBFactor負(fù)責(zé)創(chuàng)建一系列:IDBConection,IDBComond 無(wú)需提供具體類
關(guān)鍵點(diǎn):同一系列對(duì)象可依賴横侦;(可以把工廠方法模式是抽象工廠的特例理解為)
八。原型模式(Prototype)
和factory method解決的問(wèn)題一樣绰姻;是其變體
合并工廠和業(yè)務(wù)抽象類
通過(guò)克峦鞑唷(深克隆)自己來(lái)創(chuàng)建對(duì)象
具體工廠也就不需要了
關(guān)鍵點(diǎn):深克驴裼蟆(淺克隆會(huì)改變?cè)蛯?duì))
跟工廠方法的最大區(qū)別在于:用工廠模式創(chuàng)建對(duì)象只需要簡(jiǎn)單幾個(gè)步驟榨馁,還是要考慮復(fù)雜的中間狀態(tài)