應(yīng)用GoF設(shè)計(jì)模式_第1頁(yè)
應(yīng)用GoF設(shè)計(jì)模式_第2頁(yè)
應(yīng)用GoF設(shè)計(jì)模式_第3頁(yè)
應(yīng)用GoF設(shè)計(jì)模式_第4頁(yè)
應(yīng)用GoF設(shè)計(jì)模式_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第26章應(yīng)用GoF設(shè)計(jì)模式暨南大學(xué)計(jì)算機(jī)系黃戰(zhàn)目標(biāo)介紹和應(yīng)用一些GoF設(shè)計(jì)模式說明GRASP原則是對(duì)其他設(shè)計(jì)模式的歸納簡(jiǎn)介GoF=Gang-of-Four可以基于對(duì)模式的應(yīng)用來學(xué)習(xí)和解釋對(duì)象設(shè)計(jì)和職責(zé)分配模式指的是可以與設(shè)計(jì)對(duì)象結(jié)合的設(shè)計(jì)原則和習(xí)慣用法的一個(gè)詞匯GoF設(shè)計(jì)模式首先描述這些模式的是設(shè)計(jì)模式,這一著作具有重要影響并極為流行,其中闡述了23個(gè)在對(duì)象設(shè)計(jì)中很用的模式。并非所有23個(gè)設(shè)計(jì)模式都被廣泛應(yīng)用適配器(GoF)問題:如何解決不相容的接口問題,或者如何為具有不同接口的類似構(gòu)件提供穩(wěn)定的接口?解決方案(建議):通過中介適配器對(duì)象,將構(gòu)件的原有接口轉(zhuǎn)換為其他接口多態(tài)模式和其解決方案正是使用GoF適配器模式的例子適配器使用接口和多態(tài)來增加一層間接性對(duì)象,通過這些對(duì)象將不同的外部接口調(diào)整為在應(yīng)用程序中使用的一致接口一些GRASP原則是對(duì)其他設(shè)計(jì)模式的歸納適配器支持防止變異,因?yàn)樗ㄟ^應(yīng)用了接口和多態(tài)的間接對(duì)象,改變了外部接口或第三方軟件包適配器和GRASP低耦合是在變化點(diǎn)實(shí)現(xiàn)保護(hù)的方式多態(tài)是在變化點(diǎn)實(shí)現(xiàn)保護(hù)的方式,并且也是實(shí)現(xiàn)低耦合的方式間接性是實(shí)現(xiàn)低耦合的方式適配器設(shè)計(jì)模式是一種間接性和純虛構(gòu),并且使用了多態(tài)

設(shè)計(jì)中發(fā)現(xiàn)的“分析”:領(lǐng)域模型適配器設(shè)計(jì)可以提供給我們更深層次反應(yīng)和調(diào)查問題的細(xì)節(jié)這有助于我們創(chuàng)建新的軟件類和領(lǐng)域概念工廠問題:當(dāng)有特殊考慮(例如存在復(fù)雜創(chuàng)建邏輯、為了改良內(nèi)聚而分離創(chuàng)建職責(zé)等)時(shí),應(yīng)該由誰來負(fù)責(zé)創(chuàng)建對(duì)象?解決方案:創(chuàng)建稱為工廠的純虛構(gòu)對(duì)象來處理這些創(chuàng)建職責(zé)(局部地使用數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì),這種設(shè)計(jì)對(duì)于實(shí)現(xiàn)適配器類的變化方面做到了防止變異原則)通常使用單例類模式來訪問工廠模式單實(shí)例類(GoF)問題:只有唯一實(shí)例的類即為“單實(shí)例類”。對(duì)象需要全局可見性和單點(diǎn)訪問。解決方案:對(duì)類定義靜態(tài)方法用以返回單實(shí)例在UML表示法中,帶有下劃線的屬性或方法表示靜態(tài)成員,而不是實(shí)例成員注意:有很多案例表明實(shí)例方法優(yōu)先于靜態(tài)方法

策略(GoF)問題:如何設(shè)計(jì)變化但相關(guān)的算法或政策?如何設(shè)計(jì)才能使這些算法具有可變更的能力?解決方案:在單獨(dú)的類中分別定義每種算法/政策/策略,并且使其具有共同接口。策略對(duì)象將依附于語境對(duì)象-策略對(duì)象對(duì)其應(yīng)用算法組合(GoF)問題:如何能夠像處理非組合(原子)對(duì)象一樣,(多態(tài)地)處理一組對(duì)象或具有組合結(jié)構(gòu)的對(duì)象呢?解決方案:定義組合和原子對(duì)象的類,使它們實(shí)現(xiàn)相同的接口例如:如何來解決在POS例子中復(fù)雜的定價(jià)策略?組合示例外觀(GoF)問題:對(duì)一組完全不同的實(shí)現(xiàn)或接口(例如子系統(tǒng)中的實(shí)現(xiàn)和接口)需要公共、統(tǒng)一的接口??赡軙?huì)與子系統(tǒng)內(nèi)部的大量事物產(chǎn)生耦合,或者子系統(tǒng)的實(shí)現(xiàn)可能會(huì)改變。怎么辦?

對(duì)子系統(tǒng)定義唯一的接觸點(diǎn)-使用外觀對(duì)象封裝子系統(tǒng)。該外觀對(duì)象提供了唯一和統(tǒng)一的接口,并負(fù)責(zé)與子系統(tǒng)構(gòu)件進(jìn)行協(xié)作。(隱藏在子系統(tǒng)后面的一個(gè)對(duì)象)觀察者/發(fā)布-訂閱/委派事件模型(GoF)問題:不同類型的訂閱者對(duì)象關(guān)注于發(fā)布者對(duì)象的狀態(tài)變化或事件,并且想要在發(fā)布者產(chǎn)生事件時(shí)以自己獨(dú)特的方式作出反應(yīng)。此外,發(fā)布者想要保持與訂閱者的低耦合。如何對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論