UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt

UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt

ID:49411043

大小:883.50 KB

頁數(shù):26頁

時(shí)間:2020-02-06

UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt_第1頁
UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt_第2頁
UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt_第3頁
UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt_第4頁
UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt_第5頁
資源描述:

《UML設(shè)計(jì)模式 8 設(shè)計(jì)模式(2)--Strategy, Bridge模式.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、8設(shè)計(jì)模式(2) Strategy、Bridge模式權(quán)巍主要內(nèi)容8.1Strategy模式8.2Bridge模式8.3“開-閉”原則8.4組合/聚合復(fù)用原則2UML和設(shè)計(jì)模式8.1Strategy(策略)模式UML和設(shè)計(jì)模式3網(wǎng)上商城購物車系統(tǒng)的例子計(jì)算購物車中所有商品的總金額、運(yùn)費(fèi)。而商城經(jīng)常促銷,不同的商品有不同的折扣。怎樣計(jì)算?用if、switch等條件語句,根據(jù)不同情況用不同算法計(jì)算;繼承,在子類里面實(shí)現(xiàn)不同的行為;8.1.1什么是Strategy模式Strategy模式又稱Policy模式,它定義一系列算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。該模式使

2、算法可以獨(dú)立于使用它的客戶而變化。UML和設(shè)計(jì)模式48.1.2策略模式中的角色環(huán)境(Context)持有一個(gè)Strategy類的引用??啥x一個(gè)接口讓Strategy訪問它的數(shù)據(jù)。抽象策略(Strategy)給出所有的具體策略類所需的接口,通常由一個(gè)接口或抽象類實(shí)現(xiàn)。具體策略(ContreteStrategy)包裝了相關(guān)的算法或行為,實(shí)現(xiàn)Strategy接口的某個(gè)具體類。UML和設(shè)計(jì)模式5UML和設(shè)計(jì)模式6Context示意代碼:publicclassContext{privateStrategystrategy;publicvoidcontextInterface()

3、{strategy.strategyInterface();}}UML和設(shè)計(jì)模式7Strategy示意代碼:abstractpublicclassStrategy{publicabstractvoidstrategyInterface();}ContreteStrategy示意代碼:publicclassConcreteStrategyextendsStrategy{publicvoidstrategyInterface(){//算法實(shí)現(xiàn)代碼}}8.1.3策略模式的代碼示例某網(wǎng)上商城舉行促銷活動(dòng):圖書每本折扣1元,服裝類8折,家居類9折,護(hù)膚品沒折扣。顧客結(jié)算時(shí),計(jì)算購

4、物車中所有商品的總金額。UML和設(shè)計(jì)模式8例子的策略模式示意代碼DiscountStrategy代碼:NoDiscountStrategy代碼:FlatRateStrategy代碼:PercentageStrategy代碼:Context代碼:Client代碼:UML和設(shè)計(jì)模式9練習(xí)要設(shè)計(jì)一個(gè)系統(tǒng),對(duì)輸入的數(shù)據(jù)實(shí)現(xiàn)排序,系統(tǒng)提供幾種排序方法。系統(tǒng)運(yùn)行時(shí)根據(jù)用戶選擇的排序方法對(duì)數(shù)據(jù)進(jìn)行排序。(另外,可能會(huì)常常增加新的排序算法、或刪除某個(gè)算法)UML和設(shè)計(jì)模式108.2Bridge(橋接)模式UML和設(shè)計(jì)模式11開發(fā)游戲軟件的例子需要開發(fā)一款太空大戰(zhàn)游戲,該游戲可安裝在PC

5、或手機(jī)上,不同平臺(tái)上游戲的功能完全相同,并且有多種型號(hào)的太空船可供用戶選擇。存在的問題在PC和手機(jī)上的圖形繪制、聲效、游戲操作等方面的實(shí)現(xiàn)不同。經(jīng)常需要增加新型的太空船。實(shí)現(xiàn)方案一:UML和設(shè)計(jì)模式12UML和設(shè)計(jì)模式13示意代碼//抽象飛船基類publicabstractclassSpaceShip{publicabstractshot();publicabstractrun();//...}//各種型號(hào)飛船publicabstractclassSpaceShipT20extendsSpaceShip{...}publicabstractclassSpaceShipT

6、30extendsSpaceShip{...}publicabstractclassSpaceShipT50extendsSpaceShip{...}//不同平臺(tái)飛船publicclassPCSpaceShipextendsSpaceShip{...}publicclassMobileSpaceShipextendsSpaceShip{...}8.2.1什么是Bridge模式Bridge模式將抽象和實(shí)現(xiàn)分離,使它們都可以獨(dú)立的變化。Bridge模式是一種結(jié)構(gòu)型模式,使用對(duì)象間的組合關(guān)系解耦了抽象和實(shí)現(xiàn)之間固有的綁定關(guān)系,使得抽象和實(shí)現(xiàn)可以沿著各自的維度來變化。一般應(yīng)用在

7、“兩個(gè)非常強(qiáng)的變化維度”,有時(shí)候即使有兩個(gè)變化的維度,但是某個(gè)方向的變化維度并不劇烈,即當(dāng)兩個(gè)變化不會(huì)導(dǎo)致縱橫交錯(cuò)的結(jié)果,并不一定要使用本模式。UML和設(shè)計(jì)模式14UML和設(shè)計(jì)模式15Bridge模式的類圖Bridge模式中的角色抽象化(Abstraction):抽象化給出的定義,并保存一個(gè)對(duì)實(shí)現(xiàn)化對(duì)象的引用。修正抽象化(RefinedAbstraction):擴(kuò)展抽象化角色,改變和修正父類對(duì)抽象化的定義。實(shí)現(xiàn)化(Implementor):給出實(shí)現(xiàn)化角色的接口。實(shí)現(xiàn)化角色只給出底層操作,而抽象化角色應(yīng)只給出基于底層操作的更高一層的操作。具

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。