




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、會計學1設計模式概述設計模式概述(i sh)第一頁,共70頁。2第2頁/共70頁第二頁,共70頁。3第3頁/共70頁第三頁,共70頁。4第4頁/共70頁第四頁,共70頁。5Erich Gamma:蘇黎世大學:蘇黎世大學計算機科學博士,是計算機科學博士,是Eclipse、 JUnit 等項目主要等項目主要(zhyo)技術負責人之一技術負責人之一John Vlissides:斯坦福:斯坦福大學計算機科學博士大學計算機科學博士(bsh),原原IBM研究員研究員Ralph Johnson:康奈爾:康奈爾大學計算機科學博士大學計算機科學博士(bsh),伊利諾伊大學教授伊利諾伊大學教授Richard He
2、lm:墨爾本大學計算機科學博士,原:墨爾本大學計算機科學博士,原IBM 研究員,現(xiàn)在研究員,現(xiàn)在IBM咨詢集團供職咨詢集團供職第5頁/共70頁第五頁,共70頁。6第6頁/共70頁第六頁,共70頁。7第7頁/共70頁第七頁,共70頁。8第8頁/共70頁第八頁,共70頁。9經(jīng)典經(jīng)典(jngdi(jngdin)n)教材教材英文版英文版經(jīng)典經(jīng)典(jngdi(jngdin)n)教材教材中文版中文版參考教材參考教材劉偉著劉偉著參考教材參考教材入門級入門級第9頁/共70頁第九頁,共70頁。10第10頁/共70頁第十頁,共70頁。11第11頁/共70頁第十一頁,共70頁。12第12頁/共70頁第十二頁,共70
3、頁。13第13頁/共70頁第十三頁,共70頁。14第14頁/共70頁第十四頁,共70頁。15第15頁/共70頁第十五頁,共70頁。16第16頁/共70頁第十六頁,共70頁。n特定場景特定場景n設計模式是無窮無盡的,不同設計模式是無窮無盡的,不同場景或者同一場景不同動機都場景或者同一場景不同動機都會產(chǎn)生不同的設計模式會產(chǎn)生不同的設計模式n可復用但勿套用,必須理解設可復用但勿套用,必須理解設計模式的使用場景與目標計模式的使用場景與目標17第17頁/共70頁第十七頁,共70頁。18第18頁/共70頁第十八頁,共70頁。19第19頁/共70頁第十九頁,共70頁。20第20頁/共70頁第二十頁,共70頁
4、。21第21頁/共70頁第二十一頁,共70頁。22第22頁/共70頁第二十二頁,共70頁。23第23頁/共70頁第二十三頁,共70頁。24第24頁/共70頁第二十四頁,共70頁。25第25頁/共70頁第二十五頁,共70頁。26第26頁/共70頁第二十六頁,共70頁。27第27頁/共70頁第二十七頁,共70頁。28設計模式設計模式模式名模式名和分類和分類結(jié)構(gòu)結(jié)構(gòu)實現(xiàn)實現(xiàn)別名別名意圖意圖動機動機適用性適用性協(xié)作協(xié)作參與者參與者效果效果代碼示例代碼示例已知應用已知應用相關模式相關模式第28頁/共70頁第二十八頁,共70頁。29u模式名和分類:模式名簡潔地描述了設計模式的本質(zhì)u別名:模式的其他名稱u意
5、圖:設計模式是做什么的?它的基本原理和意圖是什么?它解決的是什么樣的特定設計問題?u動機:說明一個設計問題以及如何用模式中的類、對象來解決該問題的特定情景u適用性:什么情況下可以使用該設計模式?該模式可用來改進哪些不良設計?如何識別這些情況?u結(jié)構(gòu):采用(ciyng)對象建模技術對模式中的類進行圖形描述u參與者:指設計模式中的類及對象以及它們各自的職責第29頁/共70頁第二十九頁,共70頁。30u協(xié)作:模式的參與者如何協(xié)作以實現(xiàn)其職責u實現(xiàn):實現(xiàn)模式時需了解的一些提示、技術要點及應避免的缺陷(quxin),以及是否存在某些特定于實現(xiàn)語言的問題u代碼示例:用來說明怎樣實現(xiàn)該模式的代碼片段u效果:
6、模式如何支持其目標?使用模式的效果和所需做的權(quán)衡取舍?系統(tǒng)結(jié)構(gòu)的哪些方面可以獨立改變?u已知應用:實際系統(tǒng)中發(fā)現(xiàn)的模式的例子,每個模式至少包括兩個不同領域的實例u相關模式:與這個模式緊密相關的模式有哪些?其不同之處是什么?這個模式應與哪些其他模式一起使用?第30頁/共70頁第三十頁,共70頁。31第31頁/共70頁第三十一頁,共70頁。32第32頁/共70頁第三十二頁,共70頁。33第33頁/共70頁第三十三頁,共70頁。34目的目的創(chuàng)建型創(chuàng)建型結(jié)構(gòu)型結(jié)構(gòu)型行為型行為型范范圍圍類類Factory MethodFactory MethodAdapter(Adapter(類類) )Interpre
7、terInterpreterTemplate MethodTemplate Method對對象象Abstract FactoryAbstract FactoryBuilderBuilderPrototypePrototypeSingletonSingletonAdapter(Adapter(對象對象) )BridgeBridgeCompositeCompositeDecoratorDecoratorFacadeFacadeFlyweightFlyweightProxyProxyChain of ResponsibilityChain of ResponsibilityCommandComman
8、dIteratorIteratorMediatorMediatorMementoMementoObserverObserverStateStateStrategyStrategyVisitorVisitor第34頁/共70頁第三十四頁,共70頁。35u工廠方法(Factory Method):父類負責定義創(chuàng)建對象的公共接口,而子類則負責生成具體對象,將類的實例化操作延遲到子類中完成u抽象工廠(Abstract Factory):為一個產(chǎn)品族提供統(tǒng)一的創(chuàng)建接口。當需要這個產(chǎn)品族的某一系列的時候,可以從抽象工廠中選出相應(xingyng)的系列創(chuàng)建一個具體的工廠類u單件(Singleton):保證
9、一個類有且僅有一個實例,提供一個全局訪問點u生成器(Builder):將復雜對象創(chuàng)建與表示分離,同樣的創(chuàng)建過程可創(chuàng)建不同的表示。允許用戶通過指定復雜對象類型和內(nèi)容來創(chuàng)建對象,用戶不需要知道對象內(nèi)部的具體構(gòu)建細節(jié)第35頁/共70頁第三十五頁,共70頁。36u組合(Composite):定義一個接口,使之用于單一對象,也可以應用于多個單一對象組成的對象組u裝飾(Decorator):給對象動態(tài)添加額外的職責,就好像給一個物體加上裝飾物,完善其功能u代理(dil)(Proxy):在軟件系統(tǒng)中,有些對象有時候由于跨越網(wǎng)絡或者其他障礙,而不能夠或者不想直接訪問另一個對象,直接訪問會給系統(tǒng)帶來不必要的復雜
10、性,這時候可以在客戶程序和目標對象之間增加一層中間層,讓代理(dil)對象來代替目標對象打點一切u外觀(Facade):為子系統(tǒng)提供了一個更高層次、更簡單的接口,從而降低了子系統(tǒng)的復雜度,使子系統(tǒng)更易于使用和管理。外觀承擔了子系統(tǒng)中類交互的責任u橋梁(Bridge):橋梁模式的用意是將問題的抽象和實現(xiàn)分離開來實現(xiàn),通過用聚合代替繼承來解決子類爆炸性增長的問題第36頁/共70頁第三十六頁,共70頁。37u觀察者(Observer):定義了對象之間一對多的依賴,當這個對象的狀態(tài)發(fā)生改變的時候,多個對象會接受到通知,有機會做出反饋u命令(Command):將請求及其參數(shù)封裝成一個對象,作為命令發(fā)起者
11、和接收者的中介,可以對這些請求排隊或記錄請求日志,以及支持可撤銷操作u策略(Strategy):定義一組算法,將每個算法都封裝起來,并且使它們之間可以互換。策略模式使這些算法在客戶端調(diào)用它們的時候能夠互不影響地變化u模版(Template ) :定義了一個算法步驟,并允許子類為一個或多個步驟提供(tgng)實現(xiàn)。子類在不改變算法架構(gòu)的情況下,可重新定義算法中某些步驟u迭代子(Iterator):提供(tgng)一種方法順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內(nèi)部表示第37頁/共70頁第三十七頁,共70頁。38第38頁/共70頁第三十八頁,共70頁。39第39頁/共70頁第三十九頁
12、,共70頁。40第40頁/共70頁第四十頁,共70頁。能的基礎上,通過調(diào)能的基礎上,通過調(diào)整程序代碼改善軟件整程序代碼改善軟件的質(zhì)量的質(zhì)量(zhling)和性和性能,使程序的設計模能,使程序的設計模式和架構(gòu)更趨合理,式和架構(gòu)更趨合理,提高軟件的可維護性提高軟件的可維護性和可重用性和可重用性 重構(gòu)重構(gòu)(Refactoring)41第41頁/共70頁第四十一頁,共70頁。42設計原則名稱設計原則名稱設計原則簡介設計原則簡介重要性重要性單一職責原則單一職責原則 (SRP)類的職責要單一,不能將太多的職責放在一類的職責要單一,不能將太多的職責放在一個類中,盡量做到松耦合個類中,盡量做到松耦合開閉原則開
13、閉原則 (OCP)對擴展是開放的,對修改是關閉的,即在不對擴展是開放的,對修改是關閉的,即在不修改已有程序代碼的基礎上去擴展其功能修改已有程序代碼的基礎上去擴展其功能里氏代換原則里氏代換原則 (LSP)在軟件系統(tǒng)中,一個可以接受基類對象的地在軟件系統(tǒng)中,一個可以接受基類對象的地方必然可以接受一個子類對象方必然可以接受一個子類對象依賴倒轉(zhuǎn)原則依賴倒轉(zhuǎn)原則 (DIP)要針對抽象層編程,而不要針對具體類編程要針對抽象層編程,而不要針對具體類編程接口隔離原則接口隔離原則 (ISP)使用多個專門的接口來取代一個統(tǒng)一的接口使用多個專門的接口來取代一個統(tǒng)一的接口 合成復用原則合成復用原則 (CRP)在系統(tǒng)中
14、應該盡量多使用組合和聚合關聯(lián)關在系統(tǒng)中應該盡量多使用組合和聚合關聯(lián)關系,盡量少使用甚至不使用繼承關系系,盡量少使用甚至不使用繼承關系迪米特法則迪米特法則 (LoD)如果兩個類不必彼此直接通信,那么這兩個如果兩個類不必彼此直接通信,那么這兩個類就不應當發(fā)生直接的相互作用,而是通過類就不應當發(fā)生直接的相互作用,而是通過引入一個第三者發(fā)生間接交互引入一個第三者發(fā)生間接交互第42頁/共70頁第四十二頁,共70頁。43第43頁/共70頁第四十三頁,共70頁。44第44頁/共70頁第四十四頁,共70頁。45第45頁/共70頁第四十五頁,共70頁。46第46頁/共70頁第四十六頁,共70頁。47第47頁/共
15、70頁第四十七頁,共70頁。48第48頁/共70頁第四十八頁,共70頁。49第49頁/共70頁第四十九頁,共70頁。50第50頁/共70頁第五十頁,共70頁。51第51頁/共70頁第五十一頁,共70頁。52第52頁/共70頁第五十二頁,共70頁。53第53頁/共70頁第五十三頁,共70頁。節(jié)通常對子節(jié)通常對子(du zi)類可見類可見n3. 當父類的實現(xiàn)改變時可能要相當父類的實現(xiàn)改變時可能要相應的對子應的對子(du zi)類做出改變類做出改變n4. 不能在運行時改變由父類繼承不能在運行時改變由父類繼承來的實現(xiàn)來的實現(xiàn)54第54頁/共70頁第五十四頁,共70頁。相同的對象引用,可以在運行時相同的對象引用,可以在運行時動態(tài)定義組合的方式動態(tài)定義組合的方式n1. 結(jié)果系統(tǒng)可能會包含更多的對結(jié)果系統(tǒng)可能會包含更多的對象象n2. 為了使組合時可以使用為了使組合時可以使用(shyng)不同的對象,必須小心不同的對象,必須小心的的 定義接口定義接口55第55頁/共70頁第五十五頁,共70頁。56第56頁/共70頁第五十六頁,共70頁。57第57頁/共70頁第五十七頁,共70頁。58第58頁/共70頁第五十八頁,共70頁。59第59頁/共70頁第五十九頁,共70頁。60第60頁/共70頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技設備維護預防性維護策略的探索
- 車輛轉(zhuǎn)換合同范本
- 云南2025年春季云南省教育廳招募銀齡教師1135人支持職業(yè)教育筆試歷年參考題庫附帶答案詳解
- 材料合同和安裝合同范本
- 制訂藥柜合同范本
- Zopocianine-sodium-OTL-0078-sodium-生命科學試劑-MCE
- PTI-1-生命科學試劑-MCE
- P2Y1-antagonist-1-生命科學試劑-MCE
- BRD4-Inhibitor-39-生命科學試劑-MCE
- 建筑施工特種作業(yè)人員安全技術理論考核試題-高處作業(yè)、吊籃安裝拆卸工專業(yè)試題
- 班會課件:逆風飛翔破繭成蝶-從《哪吒之魔童鬧?!房辞啻浩诘某砷L與責任
- 合肥科技職業(yè)學院單招計算機類考試復習題庫(含答案)
- 2.1 堅持依憲治國 教案 -2024-2025學年統(tǒng)編版道德與法治八年級下冊
- 【語文試卷+答案】2024-2025學年泉州高二上期末質(zhì)檢
- 2018-2022年北京市中考真題數(shù)學試題匯編:填空壓軸(第16題)
- 初三物理常識試卷單選題100道及答案
- 高中英語新課程標準解讀課件
- 1.2《友邦驚詫論》教學設計-【中職專用】高二語文同步講堂(高教版2024·拓展模塊上冊)
- 2024年益陽醫(yī)學高等專科學校單招職業(yè)適應性測試題庫及答案解析
- 樓頂發(fā)光字采購安裝投標方案
- 2020免疫相關性肺炎診治要點
評論
0/150
提交評論