




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
設計方式的入門戰略方式本章的學習要點了解設計方式的用途和優點掌握設計OO的根本原那么了解本章所舉的實例開發實例實例描畫:我們要開發一個游戲鴨子,可以戲水,可以鳴叫。而且,在游戲中能夠出現很多各種各樣的鴨子。設計:將設置一個鴨子超類,處理一切鴨子的共有操作,如游泳,鳴叫等,子類實現本人特殊的操作。超類,實現共有的東西,將有特征的東西設為籠統方法綠頭鴨紅頭鴨添加方法假設需求給鴨子添加飛的方法,根據OO帶來的問題超類添加一種方法,必然給一切的子類帶來同樣的方法。上述的例子,就是一切的鴨子都可以飛。如何處理這個問題:我們可以采用子類方法覆蓋的方法,如橡皮鴨子不會飛,覆蓋橡皮鴨子飛的方法。分析上面我們采用承繼的來處理程序的開放性和可擴展性,遇到了問題,為什么會這樣?由于超類作為一切類的父類,擁有一切子類的共性,但未來會出現什么子類,無從得知,因此,無法確定哪些是共性方法和共性屬性。承繼承繼本是為了代碼的復用,節省子類的代碼。但由于未來的不確定性,無法預知子類的多少?承繼必需有父類和子類,確定父類的屬性和方法很關鍵。承繼的問題代碼在多個子類出現不用要的反復無法事先預知一切的子類的一切行為改動父類,會同時改動子類。采用接口接口在Java中是一個非常重要的概念Java不支持多承繼,但一個類可以實現多個接口。采用接口覆蓋鴨子飛和叫的方法,每一個會飛的或會叫的子類實現接口。接口帶來的問題接口可以讓每一個子類本人實現有特征的方法。子類的代碼無法重用,每一個子類都實現接口,即使子類的行為完全一致,也必需各自實現。軟件編寫盡量少修正遇到新情況,希望不修正程序或少修正程序。程序必需順應變化,而本身需求穩定。最不變的就是變化需求改動平臺改動數據改動程序設計原那么找出運用中能夠需求變化之處,將其獨立出來,把它們和無需變化的代碼分割開,分而治之。當需求改動時,代碼需求改動,這部分是可變的,從而區分出那些是需求改動的,哪些是穩定的代碼。上面的例子中,duck類中,fly(),quack()方法會隨著duck的不同而改動,因此提取出來duckflyquack我們將duck的fly行為和quack行為分別設計一個類。設計原那么針對接口編程,而不是針對實現編程。我們利用接口代表每一個行為,如FlyBehaviorQuackBehaviorDuck類不實現這個接口,而是由我們設立的行為類來實現。<<interface>>FlyBehaviorfly()FlyWithWingsfly(){…}FlyNoWayfly(){nothing}設計新的類時,子類運用接口所表示的行為,實如今行為類中,而不在子類中。接口可以實現多態在聲明對象變量時,最好用超類型。AnimalmakeSound()DogmakeSound〔〕{bark();}Bark(){汪汪叫』CatmakeSound(){meow();}meow(){喵喵叫』Dogd=newDog()d.bark();Animalanimal=newDog();animal.makeSound();a=getAnimal();a.makeSound();實現鴨子的飛行行為<<interface>>FlyBehaviorfly()FlyWithWingsfly(){…}FlyNoWayfly(){nothing}實現鴨子的鳴叫行為<<interface>>QuackBehaviorquack()Quackquack(){普通鴨子叫}MuteQuackquack(){nothing}Squackquack(){橡皮鴨子叫}上述的設計,讓鳴叫,飛行等行為曾經與duck類無關了,我們添加duck類的行為,不會影響到鳴叫,飛行等行為留意的問題剛開場設計程序時,能夠不會完全預測未來的情況,因此,應該使程序堅持足夠的彈性,以應付未來的能夠的變化。事先思索的面面俱到是不能夠的。飛行,鳴叫等的動作行為成為一個類是可以的。思索題假設如今有了一種新的玩具duck,它采用螺旋漿飛行,該如何處置。什么類還會用到FlywithWings設計思想的實現根據前面我們的設計,我們來實現duck類DuckFlyBehaviorflyBehaviorQuackBehaviorquackBehaviorperformQuack()Swim()Display()performFlay()publicclassDuck{QuackBehaviorquackBehavior;publicvoidperformQuack(){quackBehavior.quack();}子類的詳細實現publicclassMallardDuckextendsDuck{publicMallardDuck(){quackBehavior=newQuack();flyBehavior=newFlyWithWings();}publicvoiddisplay(){System.out.pringln(“〞);}}動態設定行為Duck類中參與兩個新方法:publicvoidSetFlyBehavior(FlyBehaviorfb){flyBehavior=fb;}publicvoidSetQuackBehavior(QuackBehaviorqb){quackBehavior=qb;}產生一個模型鴨publicclassModelDuckextendsDuck{publicModelDuck(){ quackBehavior=newQuack(); flyBehavior=newFlyNoWay();}publicvoiddisplay(){ System.out.println("Iamamodelduck");}}產生一個新的飛行類publicclassFlyRocketPoweredimplementsFlyBehavior{publicvoidfly(){System.out.println(“Iamflyingwithrocket〞);}動態改動行為Duckmodel=newModelDuck();model.performFly();model.setFlyBehavior(newFlyRocketPowered());Model.performFly();封裝行為DuckFlyBehaviorflyBehaviorQuackBehaviorquackBehaviorSwim()Display()performFly()performBehavior()..封裝了飛行行為封裝了鳴叫行為組合和承繼承繼是isa關系組合是hasa關系設計原那么,多用組合,少用承繼承繼的優點是代碼的復用,節省初次開發的時間。但添加了后期維護的費用。沒有哪一個軟件開發完成后,就一成不變的。后期的維護所破費的時間遠遠大于前期開發的時間。戰略方式定義了算法簇,分別封裝起來,讓它們之間可以相互交換,讓算法的變化獨立于算法的的運用者。思索迷題p25設計方式的運用每一個行業都有本人的行話,軟件設計也不例外。采用行話可以節省很多時間,行話的信息量大在軟件行業,設計所采用的各種方式就是設計者之間的行話。運用共享方式的益處減少溝通的信息量站的層次較高不易產生誤解有利于剛參與任務人的提高設計方式的運用設計方式的運用首先在于設計者采用設計方式來對軟件進展分析設計。設計方式在于如何組織每一個類及類之間的關系。等級高于庫和框架。因該說庫和框架也運用了某種設計方式。沒有關于設計方式的庫。設計方式和OO原那么的聯絡和區別了解和掌握OO原那么并不能設計出高質量,開放性好的優質軟件。設計方式在于可以更好的運用OO原那么,設計出順應變化的軟件。設計是一門藝術,取舍很重要,不同人即使運用一樣的設計方式,也不一定設計的軟件一樣。設計時一定要思索未來的變化,千萬不要寫死。OO根底籠統封裝多態承繼OO方式 戰略方式:定義一組算法簇,分別封裝起來,可以相互交換,讓算法的變化獨立于運用者OO原那
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政組織理論在國際關系中的運用與探討試題及答案
- 工地分類垃圾管理制度
- 探索集成測試在不同階段的應用與最佳實踐試題及答案
- 深入研究的不容錯過的試題及答案
- 培訓單位檔案管理制度
- 公司招投標法管理制度
- 家居商場終端管理制度
- 公路養護維修管理制度
- 醫藥生產倉庫管理制度
- 北汽汽車績效管理制度
- 共點力平衡的應用-完整版PPT
- 新版中日交流標準日本語初級下同步測試卷及答案(第30課)
- 保賠協會–歷史,承保內容和組織
- 建筑物的防雷及安全用電電子教案
- 中國近現代史社會實踐報告-2000字
- 系桿拱橋工程測量施工方案
- ISA-300+使用-300技術使用說明書
- 高層建筑“一棟一冊”消防安全檔案
- 柳洲學校學生儀容儀表日常檢查記錄表
- 人造草坪技術參數
- 淺談歌曲《我的祖國》
評論
0/150
提交評論