




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2014-2015 學(xué)年第二學(xué)期設(shè)計(jì)模式大作業(yè)課題名稱(chēng):設(shè)計(jì)模式在 Duck 模擬器設(shè)計(jì)中的應(yīng)用班 級(jí):12 級(jí)設(shè)計(jì)一班 學(xué) 號(hào):1215115401:成 績(jī):2015 年 6 月 1 日設(shè)計(jì)模式的聯(lián)用:模式通常被一起使用,組合到一個(gè)設(shè)計(jì)方案中;復(fù)合模式在一個(gè)解決方案中結(jié)合兩個(gè)或多個(gè)設(shè)計(jì)模式,以解決一些重復(fù)發(fā)生在設(shè)計(jì)模式之策略模式里,介紹了有關(guān)設(shè)計(jì)模式中的策略模式的一些概念,和設(shè)計(jì)原則。模式,原則,方法等最終都是為了應(yīng)用而服務(wù)的。在這里把它應(yīng)用到一個(gè)關(guān)于鴨子的設(shè)計(jì)中去,一起來(lái)探討一下它的實(shí)際應(yīng)用,感受一下它帶來(lái)了什么!設(shè)計(jì)描述以及類(lèi)圖創(chuàng)建鴨子的飛行接口 FlyBehavior分別創(chuàng)建三個(gè)飛行類(lèi)
2、來(lái)實(shí)現(xiàn) FlyBehavior 接口什么都不會(huì)做不會(huì)叫的鴨子類(lèi)MuteQuackMuteQuackquack( )Quackquack( )發(fā)出嘎嘎的類(lèi)QuackQuackBehaviorquack( )創(chuàng)建鴨子發(fā)出行為的接口QuackBehaviorFlyRocketeredfly( )使用火箭的類(lèi) FlyRocketeredFlyWithWingsfly( )可以飛行的類(lèi) FlyWithWingsFlyNoWayfly( )不能飛行的類(lèi) FlyNoWayFlyBehaviorfly( )呱呱叫的類(lèi)Squeak創(chuàng)建鴨子的抽象類(lèi)Duck野鴨子 MallardDuck模型鴨 MDuck優(yōu)點(diǎn):1、
3、 提供了一種替代繼承的方法,而且既保持了繼承的優(yōu)點(diǎn)(代碼重用)還比繼承更靈活(算法獨(dú)立,可以任意擴(kuò)展)。2、 避免程序中使用多重條件轉(zhuǎn)移語(yǔ)句,使系統(tǒng)更靈活,并易于擴(kuò)展。3、 遵守大部分 GRASP 原則和常用設(shè)計(jì)原則,高內(nèi)聚、低偶合。缺點(diǎn):策略模式有好的一方面也有壞的方面。MDuckMDuck()display()MallardDuckMallardDuck()display()Duckdisplay()performFly()performQuack()swim()setFlyBehavior()setQuackBehavior()Squeakquack( )1、 因?yàn)槊總€(gè)具體策略類(lèi)都會(huì)產(chǎn)生
4、一個(gè)新類(lèi),所以會(huì)增加系統(tǒng)需要的類(lèi)的數(shù)量2、Strategy 和 Context 之間的通信開(kāi)銷(xiāo)增大。根據(jù)算法的需要,Context 必須向每個(gè)不同的具體 Strategy 類(lèi)實(shí)例傳遞不同的參數(shù)。導(dǎo)致 Context 會(huì)創(chuàng)建和傳遞一些用不到的參數(shù)?,F(xiàn)在來(lái)總結(jié)一下,鴨子的行為被放在分開(kāi)的類(lèi)中,此類(lèi)專(zhuān)門(mén)提供某行為的實(shí)現(xiàn)。這 樣 , 鴨 子 類(lèi) 就 不 再 需 要 知 道 行 為 的 實(shí) 現(xiàn) 細(xì) 節(jié) 。鴨子類(lèi)不會(huì)負(fù)責(zé)實(shí)現(xiàn) Flyable 與 Quackable 接口,反而是由其他類(lèi)專(zhuān)門(mén)實(shí)現(xiàn) FlyBehavior 與QuackBehavior,這就稱(chēng)為行為類(lèi)。由行為類(lèi)實(shí)現(xiàn)行為接口, 而不是由 Duck
5、 類(lèi)實(shí)現(xiàn)行為接口。這樣的作法迥異于以往,行為不再是由繼承 Duck 超類(lèi)的具體實(shí)現(xiàn)而來(lái), 或是繼承某個(gè)接口并由子類(lèi)自行實(shí)現(xiàn)而來(lái)。(這兩種作法都是依賴(lài)于實(shí)現(xiàn),被實(shí)現(xiàn)綁得死死的,)沒(méi)辦法更改行為,除非寫(xiě)代在所碼。的新設(shè)計(jì)中, 鴨子的子類(lèi)使用接口( FlyBehavior 與 QuackBehavior)所表示的行為,以實(shí)際的實(shí)現(xiàn)不會(huì)被綁死在鴨子的子類(lèi)中。( 換句話(huà)說(shuō),特定的實(shí)現(xiàn)代碼位于實(shí)現(xiàn) FlyBehavior 與 QuakcBehavior的特定類(lèi)中),這樣就獲得了更大的靈活性和可擴(kuò)展性?;A(chǔ):抽象、封裝、多態(tài)、繼承原則:封裝變化、多用組合,少用繼承、針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程策略模式:定義
6、算法族,分別封裝起來(lái),讓它們之間可以互相替換,此模式讓算法的變化獨(dú)立于使用算法的客戶(hù)1.代碼結(jié)構(gòu)總結(jié):2.主方法package miniduck;import duck.Duck;import duck.MallardDuck;import duck.MDuck;import fly.FlyRocketered;public class MiniDuckSimulator public sic void main(String args) Duck mallard = new MallardDuck(); mallard.perfornFly(); mallard.performQuack()
7、;System.out.prln();Duck m= new MDuck();m mm.perfornFly();.setFlyBehavior(new FlyRocket.perfornFly();ered();3. package叫的行為接口package quack;publicerface QuackBehavior public void quack();嘎嘎叫 package quack;public class Quack implements QuackBehaviorOverridepublic void quack() System.out.prln(Quack);/ TO
8、DO Auto-generated method stub什么都不做,不會(huì)叫 package quack;public class MuteQuack implements QuackBehaviorOverridepublic void quack() System.out.prln();/ TODO Auto-generated method stub呱呱叫 package quack;public class Squeak implements QuackBehavior Overridepublic void quack() System.out.prln(Squeak);/ TODO
9、 Auto-generated method stub4.飛行 package鴨子飛行接口 package fly;publicerface FlyBehavior public void fly();不能飛行的類(lèi)package fly;public class FlyNoWay implements FlyBehavior Overridepublic void fly() System.out.prln(I cant fly);/ TODO Auto-generated method stub可以飛行的類(lèi)package fly;public class FlyWithWings imple
10、ments FlyBehaviorOverridepublic void fly() System.out.prln(Im flying!);/ TODO Auto-generated method stub使用火箭助推器進(jìn)行飛行package fly;public class FlyRocketered implements FlyBehavior Overridepublic void fly() System.out.prln(Im flying wirocket);/ TODO Auto-generated methodstub5.鴨子 package package duck;imp
11、ort fly.FlyBehavior;import quack.QuackBehavior;public abstract class Duck FlyBehavior flyBehavior;QuackBehavior quackBehavior;public abstract void display();public void perfornFly()flyBehavior.fly();public void performQuack()quackBehavior.quack();public void swim()System.out.prln(All ducks float,eve
12、n decoys);public void setFlyBehavior(FlyBehavior flyBehavior)this.flyBehavior = flyBehavior;public void setQuackBehavior(QuackBehavior quackBehavior)this.quackBehavior = quackBehavior;野鴨子package duck;import fly.FlyWithWings;import quack.Quack;public class MallardDuck extends Duck public MallardDuck()quackBehavior = new Quack();flyBehavior = new FlyWithWings();Overridepublic void display() System.out.prln(Im a real Mallard duck);/ TODO Auto-generated method stub模型鴨 package duck;import fly.FlyNoWay;import quack.Q
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 測(cè)試結(jié)果評(píng)估中的方法與策略研究試題及答案
- 西方政治制度的形成與影響力試題及答案
- 機(jī)電工程復(fù)合材料應(yīng)用試題
- 機(jī)電理論與實(shí)踐試題及答案
- 掘金2025年西方政治試題及答案
- 西方選舉制度的公平性試題及答案
- 政治新媒體在西方國(guó)家的影響力研究試題及答案
- 政策制定中的理論與實(shí)踐試題及答案
- 軟件開(kāi)發(fā)中的生態(tài)設(shè)計(jì)思維與試題答案
- 軟件設(shè)計(jì)師考試自我評(píng)估試題及答案
- 2025新版保安員考試試題附含答案
- 2024貴州貴陽(yáng)農(nóng)商銀行“超享聘旭日”大學(xué)生招聘50人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 養(yǎng)牛場(chǎng)項(xiàng)目可行性研究報(bào)告
- 2025公需課《人工智能賦能制造業(yè)高質(zhì)量發(fā)展》試題及答案
- 2025年三級(jí)安全培訓(xùn)考試試題附參考答案【考試直接用】
- 馬家灘鎮(zhèn)楊家圈灣村灘羊生態(tài)牧場(chǎng)基礎(chǔ)設(shè)施建設(shè)項(xiàng)目報(bào)告書(shū)
- 2024年高考江蘇卷生物試題解析版
- 基于BIM的建筑行業(yè)工程項(xiàng)目施工質(zhì)量管理與改進(jìn)報(bào)告
- 福建省莆田市2025屆高三下學(xué)期第四次教學(xué)質(zhì)量檢測(cè)試生物試題(含答案)
- 2025-2030中國(guó)連續(xù)油管行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025年安全生產(chǎn)月主題培訓(xùn)課件:如何查找身邊安全隱患
評(píng)論
0/150
提交評(píng)論