設(shè)計模式學(xué)習(xí)探討課件_第1頁
設(shè)計模式學(xué)習(xí)探討課件_第2頁
設(shè)計模式學(xué)習(xí)探討課件_第3頁
設(shè)計模式學(xué)習(xí)探討課件_第4頁
設(shè)計模式學(xué)習(xí)探討課件_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、設(shè)計模式學(xué)習(xí)探討適配器模式 Adapter Pattern橋接模式 Bridge Pattern裝飾模式 Decorator Pattern整理人:陳緩第1頁,共16頁。前言誰在改變世界?選擇單位:政府,企業(yè),教學(xué)機構(gòu),科研單位企業(yè)是推動世界向前發(fā)展的主要動力。企業(yè)只會尋找適合世界發(fā)展的最好路徑,適者生存,不適者滅亡。李彥宏:做企業(yè)是改變世界的最好方式。第2頁,共16頁。學(xué)習(xí)前的思考為什么要學(xué)習(xí)?學(xué)習(xí)是為了更好的改變世界。學(xué)習(xí)不是簡單的繼承,重要的是派生。要去其糟粕,取其精華。站在巨人的肩膀上,選擇巨人很重要。第3頁,共16頁。學(xué)習(xí)的方法怎么樣才學(xué)習(xí)更好?理解背景,知識的應(yīng)用范圍,才能做到理論

2、聯(lián)系實際。理解作者的本意,目的。批判式的學(xué)習(xí)。為什么要按照作者的方法去做,這樣做有什么好處,不這樣做,又有什么更好的方法。理論只有經(jīng)過實踐驗證才是知識。知識是嚴肅的,來不得半點虛假,是理性的世界。和日常生活不同,人和人是感性的世界。第4頁,共16頁。為什么要學(xué)習(xí)設(shè)計模式 在人類努力解決的許多領(lǐng)域的成功方案都來源于各種模式(Patterns)。事實上, 教育的一個重要目標(biāo)就是把知識的模式一代一代傳下去。下面我們首先看一下學(xué)習(xí)下棋是怎樣用到模式(patterns)。學(xué)習(xí)開發(fā)一個好的程序類似于學(xué)習(xí)怎樣下好棋.成為一個象棋大師首先學(xué)習(xí)規(guī)則和必要條件:例如, 棋子的名稱, 合法的棋子移動, 棋盤的幾何形

3、狀和方向等然后學(xué)習(xí)原理: 例如某一種棋子的相對價值, 中心格的戰(zhàn)略價值, 威脅的強度等然而要成為象棋大師, 你必須要學(xué)習(xí)其他大師下過的棋局,這些棋局就包含有模式(patterns),這些模式(patterns)必須被理解,記憶和重復(fù)的運用, 有很多種這樣的模式(patterns)成為一個軟件設(shè)計大師首先學(xué)習(xí)規(guī)則:例如算法, 數(shù)據(jù)結(jié)構(gòu)和軟件語言然后學(xué)習(xí)原理:例如結(jié)構(gòu)化編程, 模塊化編程, 面向?qū)ο缶幊? 泛編程(general programming)等但是要真正的精通軟件設(shè)計, 你必須學(xué)習(xí)其他大師級的設(shè)計, 這些設(shè)計包含的模式(patterns)必須被理解,記憶和重復(fù)的運用有很多種這樣的模式(

4、patterns)第5頁,共16頁。怎么選擇設(shè)計模式考慮設(shè)計模式是怎樣解決設(shè)計問題的瀏覽模式的意圖研究模式怎樣互相關(guān)聯(lián)研究目的相似的模式檢查重新設(shè)計的原因考慮你的設(shè)計中哪些是可變的第6頁,共16頁。怎么使用設(shè)計模式閱讀這個模式的整體概觀;尤其是適用性(applicability)及結(jié)論(consequences)這兩個小節(jié),以確認此模式適合你的問題?;仡^研究其結(jié)構(gòu)(structure)、參與者(participants)及合作者(collaborations)三小節(jié);以了解此模式中的類別及對象及其關(guān)聯(lián)。研讀范例程序代碼(sample code)之范例;可協(xié)助你學(xué)習(xí)如何實作此模式。選擇針對應(yīng)用系

5、統(tǒng)背景有意義的模式參與者(participants)名稱;可以讓此模式更精確使用在應(yīng)用系統(tǒng)中。命名方式是結(jié)合參與者的名稱及應(yīng)用系統(tǒng)中所使用的名稱。定義類別;宣告其界面;建立其繼承關(guān)系;定義表達數(shù)據(jù)及對象參考的實例變量,確認現(xiàn)存類別中與此模式有關(guān)的類別并相對的修改它。為此應(yīng)用系統(tǒng)使用之模式的操作定義名稱;此操作的名稱系依賴此應(yīng)用系統(tǒng)來命名;利用其責(zé)任及合作組合作為依據(jù)。實作這些操作來達成其在模式中的責(zé)任及合作關(guān)系,在實作(implementation)小節(jié)內(nèi)提供相關(guān)的指引;同時例程序代碼(sample code)中的程序代碼也可協(xié)助你。第7頁,共16頁。適配器模式 Adapter Pattern

6、 意圖: 將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。動機:有時,為復(fù)用而設(shè)計的工具箱類不能夠被復(fù)用的原因僅僅是因為它的接口與專業(yè)應(yīng)用領(lǐng)域所需要的接口不匹配。第8頁,共16頁。適配器模式 Adapter Pattern 類圖:第9頁,共16頁。橋接模式 Bridge Pattern 意圖: 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。動機:當(dāng)一個抽象可能有多個實現(xiàn)時,通常用繼承來協(xié)調(diào)它們。抽象類定義對該抽象的接口,而具體的子類則用不同方式加以實現(xiàn)。但是此方法有時不夠靈活。繼承機制將抽象部分與它的實現(xiàn)部分固定在

7、一起,使得難以對抽象部分和實現(xiàn)部分獨立地進行修改、擴充和重用。第10頁,共16頁。橋接模式 Bridge Pattern 類圖:第11頁,共16頁。裝飾模式 Decorator Pattern意圖:動態(tài)地給一個對象添加一些額外的職責(zé)。就擴展功能而言,它比生成子類方式更為靈活。動機:當(dāng)不能采用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴展,為支持每一種組合將產(chǎn)生大量的子類,使得子類數(shù)目呈爆炸性增長。另一種情況可能是因為類定義被隱藏,或類定義不能用于生成子類。 第12頁,共16頁。裝飾模式 Decorator Pattern 類圖:第13頁,共16頁。結(jié)束語23種設(shè)計模式也不是萬能的,更不能說是可以解決任何問題的,能不能適用,關(guān)鍵看你對這些設(shè)計模式的理解,另外還有看你程序本身的需要,濫用設(shè)計模式也會造成過度設(shè)計,反而得不償失。就象古人用兵,不是熟讀兵書就可以百戰(zhàn)不殆,呵呵。任何事情都沒有絕對,掌握理論或者方法不難,難就難在怎么與現(xiàn)實取得恰到好處的平衡,“過度設(shè)計”的現(xiàn)象其實也不少見,至少是局部的“過度”。設(shè)計模式就是前人對程序架構(gòu)的經(jīng)驗總結(jié),是針對當(dāng)時的需求,當(dāng)時市場環(huán)境。需求在變,市場也在變。要以不變應(yīng)不變,以變應(yīng)變,隨機應(yīng)變。計劃趕不上變化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論