jee中最常用設(shè)計(jì)模式_第1頁(yè)
jee中最常用設(shè)計(jì)模式_第2頁(yè)
jee中最常用設(shè)計(jì)模式_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、1. FactoryPattern 工廠模式 概述:定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi)。 FactoryMethod 使 一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)。適用性:1. 當(dāng)一個(gè)類(lèi)不知道它所必須創(chuàng)建的對(duì)象的類(lèi)的時(shí)候。2. 當(dāng)一個(gè)類(lèi)希望由它的子類(lèi)來(lái)指定它所創(chuàng)建的對(duì)象的時(shí)候。3. 當(dāng)類(lèi)將創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助子類(lèi)中的某一個(gè), 并且你希望將哪一個(gè)幫 助子類(lèi)是代理者這一信息局部化的時(shí)候。類(lèi)圖:2. SingletonPattern 單例模式 概述:保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 適用性:1. 當(dāng)類(lèi)只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問(wèn)點(diǎn)訪問(wèn)它時(shí)。2. 當(dāng)

2、這個(gè)唯一實(shí)例應(yīng)該是通過(guò)子類(lèi)化可擴(kuò)展的, 并且客戶應(yīng)該無(wú)需更改代碼就能使 用一個(gè)擴(kuò)展的實(shí)例時(shí)。類(lèi)圖:結(jié)構(gòu)型模式:3. Fa?adePattern 外觀模式概述:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面, Facade 模式定義了一個(gè)高層接 口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。適用性:1. 當(dāng)你要為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口時(shí)。 子系統(tǒng)往往因?yàn)椴粩嘌莼兊?越來(lái)越復(fù)雜。大多數(shù)模式使用時(shí)都會(huì)產(chǎn)生更多更小的類(lèi)。這使得子系統(tǒng)更具可重用性,也更 容易對(duì)子系統(tǒng)進(jìn)行定制,但這也給那些不需要定制子系統(tǒng)的用戶帶來(lái)一些使用上的困難。 Facade可以提供一個(gè)簡(jiǎn)單的缺省視圖,這一視圖對(duì)大多數(shù)用戶來(lái)說(shuō)已經(jīng)足夠,

3、而那些需要 更多的可定制性的用戶可以越過(guò) facade 層。2. 客戶程序與抽象類(lèi)的實(shí)現(xiàn)部分之間存在著很大的依賴性。引入 facade 將這個(gè)子 系統(tǒng)與客戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨(dú)立性和可移植性。3. 當(dāng)你需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng)時(shí),使用 facade 模式定義子系統(tǒng)中每層的 入口點(diǎn)。如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過(guò) facade 進(jìn)行通訊,從而簡(jiǎn)化 了它們之間的依賴關(guān)系。類(lèi)圖:4. AdapterPattern 適配器模式 概述:將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。 Adapter 模式使得原本由于接 口不兼容而不能一起工作的那些類(lèi)可以一起工作。適用

4、性:1. 你想使用一個(gè)已經(jīng)存在的類(lèi),而它的接口不符合你的需求。2. 你想創(chuàng)建一個(gè)可以復(fù)用的類(lèi),該類(lèi)可以與其他不相關(guān)的類(lèi)或不可預(yù)見(jiàn)的類(lèi)(即那 些接口可能不一定兼容的類(lèi))協(xié)同工作。3. (僅適用于對(duì)象 Adapter )你想使用一些已經(jīng)存在的子類(lèi),但是不可能對(duì)每一個(gè) 都進(jìn)行子類(lèi)化以匹配它們的接口。對(duì)象適配器可以適配它的父類(lèi)接口。5. BridgePattern 橋接模式 概述:將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。 適用性:1. 你不希望在抽象和它的實(shí)現(xiàn)部分之間有一個(gè)固定的綁定關(guān)系。 例如這種情況可能 是因?yàn)椋诔绦蜻\(yùn)行時(shí)刻實(shí)現(xiàn)部分應(yīng)可以被選擇或者切換。2. 類(lèi)的抽象以及它的實(shí)現(xiàn)都

5、應(yīng)該可以通過(guò)生成子類(lèi)的方法加以擴(kuò)充。這時(shí) Bridge 模式使你可以對(duì)不同的抽象接口和實(shí)現(xiàn)部分進(jìn)行組合,并分別對(duì)它們進(jìn)行擴(kuò)充。3. 對(duì)一個(gè)抽象的實(shí)現(xiàn)部分的修改應(yīng)對(duì)客戶不產(chǎn)生影響,即客戶的代碼不必重新編 譯。4. 正如在意圖一節(jié)的第一個(gè)類(lèi)圖中所示的那樣,有許多類(lèi)要生成。這樣一種類(lèi)層次 結(jié)構(gòu)說(shuō)明你必須將一個(gè)對(duì)象分解成兩個(gè)部分。5. 你想在多個(gè)對(duì)象間共享實(shí)現(xiàn)(可能使用引用計(jì)數(shù)),但同時(shí)要求客戶并不知道這 一點(diǎn)。類(lèi)圖:6. ProxyPattern 代理模式 概述:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。 適用性:1. 遠(yuǎn)程代理(RemoteProxy)為一個(gè)對(duì)象在不同的地址空間提供局部代表。2

6、. 虛代理( VirtualProxy )根據(jù)需要?jiǎng)?chuàng)建開(kāi)銷(xiāo)很大的對(duì)象。3. 保護(hù)代理( ProtectionProxy )控制對(duì)原始對(duì)象的訪問(wèn)。4. 智能指引( SmartReference )取代了簡(jiǎn)單的指針,它在訪問(wèn)對(duì)象時(shí)執(zhí)行一些附加 操作。類(lèi)圖:行為型模式:7. CommandPattern命令模式 概述:將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤消的操作。適用性:1. 抽象出待執(zhí)行的動(dòng)作以參數(shù)化某對(duì)象。2. 在不同的時(shí)刻指定、排列和執(zhí)行請(qǐng)求。3. 支持取消操作。4. 支持修改日志,這樣當(dāng)系統(tǒng)崩潰時(shí),這些修改可以被重做一遍。5

7、. 用構(gòu)建在原語(yǔ)操作上的高層操作構(gòu)造一個(gè)系統(tǒng)。 類(lèi)圖:8. StrategyPattern 策略模式概述:定義一系列的算法 , 把它們一個(gè)個(gè)封裝起來(lái) ,并且使它們可相互替換。本模式 使得算法可獨(dú)立于使用它的客戶而變化。適用性:1 .許多相關(guān)的類(lèi)僅僅是行為有異。 “策略”提供了一種用多個(gè)行為中的一個(gè)行為來(lái) 配置一個(gè)類(lèi)的方法。2. 需要使用一個(gè)算法的不同變體。3. 算法使用客戶不應(yīng)該知道的數(shù)據(jù)。可使用策略模式以避免暴露復(fù)雜的、與算法相 關(guān)的數(shù)據(jù)結(jié)構(gòu)。4. 一個(gè)類(lèi)定義了多種行為 , 并且這些行為在這個(gè)類(lèi)的操作中以多個(gè)條件語(yǔ)句的形式 出現(xiàn)。將相關(guān)的條件分支移入它們各自的 Strategy 類(lèi)中以代替這

8、些條件語(yǔ)句。9. IteratorPattern 迭代器模式 概述:給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器 使用該表示來(lái)解釋語(yǔ)言中的句子。適用性:1. 訪問(wèn)一個(gè)聚合對(duì)象的內(nèi)容而無(wú)需暴露它的內(nèi)部表示。2. 支持對(duì)聚合對(duì)象的多種遍歷。3. 為遍歷不同的聚合結(jié)構(gòu)提供一個(gè)統(tǒng)一的接口 (即, 支持多態(tài)迭代 ) 。 類(lèi)圖:10.ObserverPattern 觀察者模式 概述:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系 ,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí) , 所有依賴于 它的對(duì)象都得到通知并被自動(dòng)更新。適用性:1. 當(dāng)一個(gè)抽象模型有兩個(gè)方面 , 其中一個(gè)方面依賴于另一方面。將這二者封裝在獨(dú) 立

9、的對(duì)象中以使它們可以各自獨(dú)立地改變和復(fù)用。2. 當(dāng)對(duì)一個(gè)對(duì)象的改變需要同時(shí)改變其它對(duì)象 , 而不知道具體有多少對(duì)象有待改 變。3. 當(dāng)一個(gè)對(duì)象必須通知其它對(duì)象,而它又不能假定其它對(duì)象是誰(shuí)。 類(lèi)圖:補(bǔ)充:裝飾模式概述: 動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就增加功能來(lái)說(shuō), Decorator 模式 相比生成子類(lèi)更為靈活。適用性:1. 在不影響其他對(duì)象的情況下,以動(dòng)態(tài)、透明的方式給單個(gè)對(duì)象添加職責(zé)。2. 處理那些可以撤消的職責(zé)。3. 當(dāng)不能采用生成子類(lèi)的方法進(jìn)行擴(kuò)充時(shí)。 類(lèi)圖:模板方法概述: 定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類(lèi)中。TemplateMethod 使得子類(lèi)可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特 定步驟。適用性:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論