C#設(shè)計(jì)模式-策略模式.ppt_第1頁
C#設(shè)計(jì)模式-策略模式.ppt_第2頁
C#設(shè)計(jì)模式-策略模式.ppt_第3頁
C#設(shè)計(jì)模式-策略模式.ppt_第4頁
C#設(shè)計(jì)模式-策略模式.ppt_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Design Patterns,策略模式,劉 偉 (Sunny) weiliu_,大綱,策略模式概述 策略模式的結(jié)構(gòu)與實(shí)現(xiàn) 策略模式的應(yīng)用實(shí)例 PetShop 4.0中的訂單處理 策略模式的優(yōu)缺點(diǎn)與適用環(huán)境,策略模式概述,旅游出行方式示意圖,策略模式概述,分析 實(shí)現(xiàn)某個(gè)目標(biāo)的途徑不止一條,可根據(jù)實(shí)際情況選擇一條合適的途徑 軟件開發(fā): 多種算法,例如排序、查找、打折等 使用硬編碼(Hard Coding)實(shí)現(xiàn)將導(dǎo)致系統(tǒng)違背開閉原則,擴(kuò)展性差,且維護(hù)困難 可以定義一些獨(dú)立的類來封裝不同的算法,每一個(gè)類封裝一種具體的算法策略類,策略模式,策略模式概述,策略模式的定義 對(duì)象行為型模式,策略模式概述,策略模式的定義 又稱為政策(Policy)模式 每一個(gè)封裝算法的類稱之為策略(Strategy)類 策略模式提供了一種可插入式(Pluggable)算法的實(shí)現(xiàn)方案,策略模式的結(jié)構(gòu)與實(shí)現(xiàn),策略模式的結(jié)構(gòu),策略模式的結(jié)構(gòu) 策略模式包含以下3個(gè)角色: Context(環(huán)境類) Strategy(抽象策略類) ConcreteStrategy(具體策略類),策略模式的結(jié)構(gòu)與實(shí)現(xiàn),策略模式的實(shí)現(xiàn) 典型的抽象策略類代碼:,策略模式的結(jié)構(gòu)與實(shí)現(xiàn),策略模式的實(shí)現(xiàn) 典型的具體策略類代碼:,策略模式的結(jié)構(gòu)與實(shí)現(xiàn),策略模式的實(shí)現(xiàn) 典型的環(huán)境類代碼:,策略模式的結(jié)構(gòu)與實(shí)現(xiàn),策略模式的實(shí)現(xiàn) 典型的客戶端代碼片段:,策略模式的應(yīng)用實(shí)例,實(shí)例說明,策略模式的應(yīng)用實(shí)例,實(shí)例類圖,電影票打折方案結(jié)構(gòu)圖,策略模式的應(yīng)用實(shí)例,實(shí)例代碼 (1) MovieTicket:電影票類,充當(dāng)環(huán)境類 (2) Discount:折扣類,充當(dāng)抽象策略類 (3) StudentDiscount:學(xué)生票折扣類,充當(dāng)具體策略類 (4) ChildrenDiscount:兒童票折扣類,充當(dāng)具體策略類 (5) VIPDiscount:VIP會(huì)員票折扣類,充當(dāng)具體策略類 (6) 配置文件App.config (7) Program:客戶端測(cè)試類,演示,參考代碼 (DesignPatternStrategySample),策略模式的應(yīng)用實(shí)例,結(jié)果及分析 如果需要更換具體策略類,無須修改源代碼,只需修改配置文件即可,完全符合開閉原則,PetShop 4.0中的訂單處理,PetShop 4.0的BLL(Business Logic Layer,業(yè)務(wù)邏輯層)子項(xiàng)目局部結(jié)構(gòu),PetShop訂單策略類結(jié)構(gòu)圖,PetShop 4.0中的訂單處理,配置文件web.config代碼片段:,策略模式的優(yōu)缺點(diǎn)與適用環(huán)境,模式優(yōu)點(diǎn) 提供了對(duì)開閉原則的完美支持,用戶可以在不修改原有系統(tǒng)的基礎(chǔ)上選擇算法或行為,也可以靈活地增加新的算法或行為 提供了管理相關(guān)的算法族的辦法 提供了一種可以替換繼承關(guān)系的辦法 可以避免多重條件選擇語句 提供了一種算法的復(fù)用機(jī)制,不同的環(huán)境類可以方便地復(fù)用策略類,策略模式的優(yōu)缺點(diǎn)與適用環(huán)境,模式缺點(diǎn) 客戶端必須知道所有的策略類,并自行決定使用哪一個(gè)策略類 將造成系統(tǒng)產(chǎn)生很多具體策略類 無法同時(shí)在客戶端使用多個(gè)策略類,策略模式的優(yōu)缺點(diǎn)與適用環(huán)境,模式適用環(huán)境 一個(gè)系統(tǒng)需要?jiǎng)討B(tài)地在幾種算法中選擇一種 避免使用難以維護(hù)的多重條件選擇語句 不希望客戶端知道復(fù)雜的、與算法相關(guān)的數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論