![裝飾者模式講課講稿_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/cbc079f4-1e23-4f65-8df6-9f1e9b8130be/cbc079f4-1e23-4f65-8df6-9f1e9b8130be1.gif)
![裝飾者模式講課講稿_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/cbc079f4-1e23-4f65-8df6-9f1e9b8130be/cbc079f4-1e23-4f65-8df6-9f1e9b8130be2.gif)
![裝飾者模式講課講稿_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/cbc079f4-1e23-4f65-8df6-9f1e9b8130be/cbc079f4-1e23-4f65-8df6-9f1e9b8130be3.gif)
![裝飾者模式講課講稿_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/cbc079f4-1e23-4f65-8df6-9f1e9b8130be/cbc079f4-1e23-4f65-8df6-9f1e9b8130be4.gif)
![裝飾者模式講課講稿_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/cbc079f4-1e23-4f65-8df6-9f1e9b8130be/cbc079f4-1e23-4f65-8df6-9f1e9b8130be5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、裝飾者模式第7章 設(shè)計(jì)模式實(shí)現(xiàn)1類爆炸調(diào)料的增加/刪除調(diào)料價(jià)格的修改7.3 裝飾者模式第7章 設(shè)計(jì)模式實(shí)現(xiàn)2使用實(shí)例變量和繼承,跟蹤這些調(diào)料7.3 裝飾者模式第7章 設(shè)計(jì)模式實(shí)現(xiàn)27.3 裝飾者模式第7章 設(shè)計(jì)模式問(wèn)題:實(shí)現(xiàn)cost方法7.3 裝飾者模式第7章 設(shè)計(jì)模式當(dāng)哪些因素改變時(shí)會(huì)影響這個(gè)設(shè)計(jì)?調(diào)料價(jià)錢(qián)的改變會(huì)使我們更改現(xiàn)有代碼。一旦出現(xiàn)新的調(diào)料,我們就需要加上新的方法,并改變超類中的cost()方法。以后可能會(huì)開(kāi)發(fā)出新飲料,對(duì)于這些飲料而言(冰茶),某些調(diào)料可能并不適合,但是在這個(gè)設(shè)計(jì)方式中,Tea子類仍將繼承那些不合適的方法,比如:hasWhip()。如何顧客想要雙倍摩卡,怎么辦?7
2、.3 裝飾者模式第7章 設(shè)計(jì)模式設(shè)計(jì)原則(Open-ClosedPrinciple)類應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。我們的目標(biāo)是允許類容易擴(kuò)展,在不修改現(xiàn)有代碼的情況下,就可搭配新的行為。如能實(shí)現(xiàn)這樣的目標(biāo),其好處在于:這樣的設(shè)計(jì)具有彈性,可以應(yīng)對(duì)改變,可以接受新的功能來(lái)應(yīng)對(duì)改變的需求。如何讓設(shè)計(jì)的每個(gè)部分都遵循開(kāi)放-關(guān)閉原則?這通常是無(wú)法做到的。要讓OO設(shè)計(jì)同時(shí)具有開(kāi)放性和關(guān)閉性,又不修改現(xiàn)有的代碼,需要花費(fèi)許多時(shí)間和努力。一般來(lái)說(shuō),我們沒(méi)有足夠的精力把設(shè)計(jì)的每個(gè)部分都這么設(shè)計(jì),這可能只是一種浪費(fèi)。遵循開(kāi)放-關(guān)閉原則,通常會(huì)引入新的抽象層次,增加代碼的復(fù)雜度。你需要把注意力集中在設(shè)計(jì)中最有可能
3、改變的地方,然后應(yīng)用開(kāi)放-關(guān)閉原則。7.3 裝飾者模式第7章 設(shè)計(jì)模式星巴克咖啡訂單管理系統(tǒng)使用裝飾者模式以飲料(Beverage)為主體,然后在運(yùn)行時(shí)以調(diào)料(Condiment)來(lái)裝飾(decorate)飲料比如,顧客想要摩卡和奶泡深焙咖啡,那么:取出一個(gè)深焙咖啡(DarkRoast)對(duì)象以摩卡(Mocha)對(duì)象裝飾它以奶泡(Whip)對(duì)象裝飾它調(diào)用cost方法,并依賴委托(delegrate)將調(diào)料的價(jià)格加上去7.3 裝飾者模式第7章 設(shè)計(jì)模式以DarkRoast對(duì)象開(kāi)始顧客需要摩卡(Mocha),所以建立一個(gè)Mocha對(duì)象,并用它將DarkRoast對(duì)象包起來(lái)7.3 裝飾者模式第7章 設(shè)
4、計(jì)模式顧客也想要奶泡(Whip),所以建立一個(gè)Whip裝飾者,并用它將Mocha對(duì)象包起來(lái)7.3 裝飾者模式第7章 設(shè)計(jì)模式通過(guò)調(diào)用最外圈裝飾者(Whip)的cost即可計(jì)算飲料價(jià)格。7.3 裝飾者模式第7章 設(shè)計(jì)模式“裝飾者模式”特點(diǎn)裝飾者和被裝飾對(duì)象具有相同的超類型可以用一個(gè)或多個(gè)裝飾者包裝一個(gè)對(duì)象由于裝飾者和被裝飾對(duì)象有相同的超類型,所以在任何需要原始對(duì)象(被包裝)的場(chǎng)合,都可以用裝飾過(guò)的對(duì)象代替她裝飾者可以在所委托被裝飾者的行為之前或之后,加上自己的行為,以達(dá)到特定的目的對(duì)象可以在任何時(shí)候被裝飾,所以可以在運(yùn)行時(shí)動(dòng)態(tài)的、不限量的用需要的裝飾者來(lái)裝飾對(duì)象裝飾者模式定義裝飾者模式動(dòng)態(tài)地將責(zé)
5、任附加到對(duì)象上。若要擴(kuò)展功能,裝飾者提供了比繼承更有彈性的替代方案。7.3 裝飾者模式第7章 設(shè)計(jì)模式7.3 裝飾者模式第7章 設(shè)計(jì)模式7.3 裝飾者模式第7章 設(shè)計(jì)模式問(wèn)題為什么Decorate類擴(kuò)展自Component類?裝飾者和被裝飾者必須是一樣的類型,我們?cè)诖耸褂美^承達(dá)到“類型匹配”類型匹配意味著裝飾者和被裝飾者具有相同的接口,從而裝飾者可以取代被裝飾者新的行為并不是繼承自超類,而是由組合對(duì)象得到,即所有飲料和調(diào)料可以更有彈性的加以混合和匹配我們可以在任何時(shí)候,實(shí)現(xiàn)新的裝飾者增加新的行為。如果依賴?yán)^承,每當(dāng)需要新行為時(shí),必須修改代碼Component類型可以使用抽象類,也可以使用接口7
6、.3 裝飾者模式第7章 設(shè)計(jì)模式問(wèn)題:如果有一張訂單:如果有一張訂單:“雙倍摩卡雙倍摩卡豆?jié){豆?jié){奶泡奶泡拿鐵拿鐵咖啡咖啡”,應(yīng)該如何進(jìn)行設(shè)計(jì)?,應(yīng)該如何進(jìn)行設(shè)計(jì)?7.3 裝飾者模式第7章 設(shè)計(jì)模式Beverage類Condiment類7.3 裝飾者模式第7章 設(shè)計(jì)模式飲料(被裝飾者)的代碼7.3 裝飾者模式第7章 設(shè)計(jì)模式飲料(被裝飾者)的代碼7.3 裝飾者模式第7章 設(shè)計(jì)模式調(diào)料(裝飾者)的代碼7.3 裝飾者模式第7章 設(shè)計(jì)模式測(cè)試代碼7.3 裝飾者模式第7章 設(shè)計(jì)模式測(cè)試結(jié)果7.3 裝飾者模式第7章 設(shè)計(jì)模式總結(jié)在我們的代碼中,應(yīng)該允許行為可以被擴(kuò)展,而無(wú)需修改現(xiàn)有的代碼裝飾者模式意味著一
7、群裝飾者類,這些類用來(lái)包裝具體組件裝飾者反映出被裝飾者的組件類型(具有相同的類型)裝飾者可以在被裝飾者的行為前面或后面加上自己的行為,甚至將被裝飾者的行為整個(gè)取代掉,而達(dá)到特定的目的可以用無(wú)數(shù)個(gè)裝飾者包裝一個(gè)組件裝飾者一般對(duì)組件的客戶是透明的,除非客戶程序依賴于組件的具體類型裝飾者會(huì)導(dǎo)致設(shè)計(jì)中出現(xiàn)許多小對(duì)象,如果過(guò)度使用,會(huì)讓程序變得復(fù)雜7.3 裝飾者模式第7章 設(shè)計(jì)模式問(wèn)題1星巴克決定在菜單上加上咖啡的容量大小,供顧客選擇小杯(tall)、中杯(grande)、大杯(venti);另外還需要根據(jù)咖啡容量收費(fèi),比如小中大杯咖啡加上豆?jié){(Soy),分別加收0.10、0.15、0.20美金。我們應(yīng)該如何改變裝飾者類應(yīng)對(duì)這樣的需求?7.3 裝飾者模式第7章 設(shè)計(jì)模式7.3 裝飾者模式第7章 設(shè)計(jì)模式問(wèn)題2在裝飾者模式中,是否可以允許裝飾者知道一連串裝飾鏈條中其他裝飾者地存在?比如,我們需要使用getDescription()列出“Whip,DoubleMocha”,而不是“Moc
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 5 We're family (說(shuō)課稿)-2024-2025學(xué)年外研版(三起)(2024)英語(yǔ)三年級(jí)上冊(cè)
- 1《學(xué)習(xí)伴我成長(zhǎng)》(說(shuō)課稿)-部編版道德與法治三年級(jí)上冊(cè)
- Unit 2 Different families Part B Let's talk(說(shuō)課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2《用水計(jì)量時(shí)間》說(shuō)課稿-2024-2025學(xué)年科學(xué)五年級(jí)上冊(cè)教科版
- 2025產(chǎn)品購(gòu)銷合同樣書(shū)
- 2023九年級(jí)數(shù)學(xué)下冊(cè) 第25章 投影與視圖25.1 投影第2課時(shí) 正投影說(shuō)課稿 (新版)滬科版001
- 2025城市民用戶燃?xì)夤こ虒?shí)施合同書(shū)范本范文
- 2025婦女發(fā)展監(jiān)測(cè)評(píng)估項(xiàng)目工程合同管理
- 2025合同模板合伙人利潤(rùn)分配協(xié)議范本
- 2024-2025學(xué)年高中政治 第3單元 第6課 第1框 源遠(yuǎn)流長(zhǎng)的中華文化說(shuō)課稿 新人教版必修3001
- 現(xiàn)代通信原理與技術(shù)(第五版)PPT全套完整教學(xué)課件
- 社區(qū)獲得性肺炎教學(xué)查房
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護(hù)技術(shù)要求
- DB31T 685-2019 養(yǎng)老機(jī)構(gòu)設(shè)施與服務(wù)要求
- 燕子山風(fēng)電場(chǎng)項(xiàng)目安全預(yù)評(píng)價(jià)報(bào)告
- 高一英語(yǔ)課本必修1各單元重點(diǎn)短語(yǔ)
- 糖尿病運(yùn)動(dòng)指導(dǎo)課件
- 完整版金屬學(xué)與熱處理課件
- T∕CSTM 00640-2022 烤爐用耐高溫粉末涂料
- 心腦血管病的危害教學(xué)課件
評(píng)論
0/150
提交評(píng)論