




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計模式、框架及其實踐張永吉. .怎樣成為一個象棋高手?o 第一步,學(xué)習(xí)基本規(guī)則o 第二步,學(xué)習(xí)取勝的原理這時,你說你已經(jīng)學(xué)會下棋學(xué)會下棋了o 但是,你要想成為一個象棋高手,除了多下棋和善于總結(jié)經(jīng)驗以外,一個重要的途徑就是看高手們的棋譜,學(xué)習(xí)、理解、記憶和應(yīng)用高手們總結(jié)的布局和定式o 這里的布局和定式就相當(dāng)于我們說的模式,有幾百種。. .怎樣成為一個軟件設(shè)計高手?o 第一步,學(xué)習(xí)基本規(guī)則。例如,數(shù)據(jù)結(jié)構(gòu)、各種算法、編程語言等。o 第二步,學(xué)習(xí)軟件設(shè)計的原理和方法。例如,結(jié)構(gòu)程序設(shè)計、模塊化方法、面向?qū)ο蟮脑O(shè)計方法等。這時,你已經(jīng)可以說學(xué)會軟件設(shè)計學(xué)會軟件設(shè)計了。o 但是,你要想成為一個軟件設(shè)計
2、的高手,除了多動手和自己善于總結(jié)經(jīng)驗總結(jié)經(jīng)驗以外,一個重要的途徑就是看軟件設(shè)計的高手們的軟件,學(xué)習(xí)、理解、記憶和重復(fù)應(yīng)用軟件設(shè)計模式。o 這種模式很多,有幾百種。. .目標(biāo)o 了解面向?qū)ο笤O(shè)計的基本原則了解面向?qū)ο笤O(shè)計的基本原則o 了解設(shè)計模式概念及常用的設(shè)計模式o 了解框架的概念及設(shè)計原則o 掌握設(shè)計模式的學(xué)習(xí)方法. .內(nèi)容o 面向?qū)ο笤O(shè)計開發(fā)的基本原則o 設(shè)計模式概念、分類及常用設(shè)計模式o 框架概念及設(shè)計原則o 設(shè)計模式的運用實例n油品計算框架n基于Jexcel的簡易報表開發(fā)框架nJunit 設(shè)計. .面向?qū)ο笤O(shè)計原則o 開閉原則o 針對接口編程原則o 高內(nèi)聚-低耦合原則o 最少知識原則o
3、 類的單一職責(zé)原則o 依賴倒置原則o 里氏代換原則. .開閉原則o 擴(kuò)展系統(tǒng)的行為時,不需要修改以前的代碼,而是擴(kuò)展以前的代碼o 針對修改關(guān)閉o 針對擴(kuò)展開放o 提高代碼的可維護(hù)性. .針對接口編程原則o 接口是高層的抽象o 接口可以隱藏實現(xiàn)的細(xì)節(jié)o 接口可以清晰指出對象的職責(zé)o 接口是實現(xiàn)軟件pluggable的關(guān)鍵o 松散耦合o 增加重用的可能性. .類的單一職責(zé)原則o 一個類只做一件事o 一個類的職責(zé)僅僅有一個原因而發(fā)生改變o 例:如一個界面展示類夾雜業(yè)務(wù)邏輯代碼或者數(shù)據(jù)數(shù)據(jù)庫聯(lián)接代碼。. .依賴倒置原則o 抽象不應(yīng)該依賴于具體o 具體應(yīng)該依賴于抽象o 抽象依賴于具體,降低了重用的可能性
4、. .結(jié)構(gòu)化編程面向?qū)ο蟮募軜?gòu). .里氏代換原則o 在所有引用基類的地方,都可以用此基類的子類替換,而不影響程序原來的功能o 違背里氏代換原則將給程序帶來不穩(wěn)定性. .class 鳥public void 飛();class 鸚鵡public void 學(xué)話();. .class 鴕鳥 : 鳥public void 飛()throws(“鴕鳥不能飛”);/public void play(鳥 d)d.飛(); /此處換成鴕鳥將導(dǎo)致錯誤. .目標(biāo)o 了解面向?qū)ο笤O(shè)計的基本原則o 了解設(shè)計模式概念及常用的設(shè)計模式了解設(shè)計模式概念及常用的設(shè)計模式o 了解框架的概念及設(shè)計原則o 掌握設(shè)計模式的學(xué)習(xí)方法
5、. .設(shè)計模式o 為什么使用設(shè)計模式?o 什么是設(shè)計模式?o 如何描述一個設(shè)計模式?o 如何選擇一個設(shè)計模式?o 設(shè)計模式的分類. .為什么使用設(shè)計模式?o 僵化性(Rigidity):設(shè)計難以改變。 o 脆弱性(Fragility):設(shè)計易于遭到破壞。 o 牢固性(Immobility):設(shè)計難以重用。 o 粘滯性(Viscosity):難以做正確的事情。 o 不必要的復(fù)雜性(Needless Complexity):過分設(shè)計。 o 不必要的重復(fù)(Needless Repetition):過多的重復(fù)。 o 晦澀性(Opacity):混亂的表達(dá)。. .什么是設(shè)計模式?o 面向?qū)ο笤O(shè)計經(jīng)驗的總結(jié)
6、和理論化抽象o 描述了軟件設(shè)計過程中經(jīng)常碰到的問題及其解決方案核心。. .如何描述一個設(shè)計模式?o 意圖o 別名o 動機(jī)o 適用性o 結(jié)構(gòu)o 參與者o 協(xié)作o 效果o 實現(xiàn)o 代碼示例o 已知應(yīng)用o 相關(guān)模式. .如何選擇一個設(shè)計模式?o 了解每一個設(shè)計模式所解決的問題o 了解模式的靜態(tài)結(jié)構(gòu)o 了解模式的動態(tài)結(jié)構(gòu)o 查看當(dāng)前設(shè)計系統(tǒng)易變的部分. .設(shè)計模式的分類o 創(chuàng)建者模式n 有關(guān)對象創(chuàng)建的模式o 結(jié)構(gòu)型模式n 描述對象構(gòu)造和組成的方式o 行為模式n 描述一組對象交互的方式. .創(chuàng)建者模式o 簡單工廠模式 (Simple Factory)o 工廠方法 (Factory Method)o 抽象
7、工廠 (Abstract Factory)o 建造者模式 (Builder)o 原型模式 (Prototype)o 單例模式 (Singleton). .工廠模式o 封裝對象(產(chǎn)品)的構(gòu)建過程. .一般的對象創(chuàng)建方式o Noodle noodle = new Noodle();o Bread bread = new Bread();o Rice rice = new Rice();o o o . .使用工廠創(chuàng)建對象. .餐廳里供應(yīng)的菜譜. .簡單工廠o 簡單工廠-手工作坊,個體戶o 生產(chǎn)面包,米飯,面條o 所有的產(chǎn)品都有一個大師傅制作. .簡單工廠示例代碼. .調(diào)用者代碼. .工廠方法o 工廠
8、方法-規(guī)模擴(kuò)大,更專業(yè)o 工廠和產(chǎn)品是平行的繼承層次結(jié)構(gòu)o 每一種產(chǎn)品都有專門的大師傅制作o 有面包師,面條師,米飯師. .工廠方法類圖. .抽象工廠o 產(chǎn)品線的生產(chǎn)方式o 提供西北系列飲食n 西北面包,西北面條,西北米飯o 提供東北系列飲食n 東北面包,東北面條,東北米飯. .抽象工廠類圖. .更好的工廠實現(xiàn)方法o 基于反射的實現(xiàn)方式o 采用xml或數(shù)據(jù)庫保存類的配置信息o Spring的Bean工廠. .SpringBean工廠示例. .工廠模式的總結(jié)o 簡單工廠模式不滿足開閉原則o 工廠方法模式對增加新產(chǎn)品支持開閉原則o 抽象工廠對增加新的產(chǎn)品系列滿足開閉原則. .建造者模式o 解決一個
9、復(fù)雜對象的構(gòu)造過程o 一碗蘭州拉面由面條,湯,肉,香菜組成. .原型模式o 通過復(fù)制對象的方式來創(chuàng)建對象o Java和.net均提供了對原型模式的直接支持. .單例模式public final class SpringBeanUtilprivate static SpringBeanUtil springBeanUtil = null; private SpringBeanUtil()public static SpringBeanUtil getInstanse()if(null = springBeanUtil)springBeanUtil = new SpringBeanUtil();r
10、eturn springBeanUtil;. .結(jié)構(gòu)模式o 適配器模式適配器模式 (Adapter)o 橋接模式 (Bridge)o 組合模式 (Composite)o 裝飾模式 (Decorator)o 外觀模式 (Facade)o 代理模式 (Proxy)o 亨元模式 (Flyweight). .適配器模式o 把一個類的接口轉(zhuǎn)變成客戶希望的接口o 使原本接口不一致的類提供統(tǒng)一的調(diào)用接口. .結(jié)構(gòu)模式o 適配器模式 (Adapter)o 橋接模式 (Bridge)o 組合模式組合模式 (Composite)o 裝飾模式 (Decorator)o 外觀模式 (Facade)o 代理模式 (Pr
11、oxy)o 亨元模式 (Flyweight). .組合模式. .裝飾模式o 適配器模式 (Adapter)o 橋接模式 (Bridge)o 組合模式 (Composite)o 裝飾模式裝飾模式 (Decorator)o 外觀模式 (Facade)o 代理模式 (Proxy)o 亨元模式 (Flyweight). .裝飾模式的引入-較深層次的繼承結(jié)構(gòu). .裝飾模式o 代替深層的繼承結(jié)構(gòu)代替深層的繼承結(jié)構(gòu). .示例代碼. .結(jié)構(gòu)模式o 適配器模式 (Adapter)o 橋接模式 (Bridge)o 組合模式 (Composite)o 裝飾模式 (Decorator)o 外觀模式外觀模式 (Faca
12、de)o 代理模式 (Proxy)o 亨元模式 (Flyweight). .外觀模式o 外部與一個子系統(tǒng)的通信僅通過一個門面類進(jìn)行。市場部銷售部財務(wù)部經(jīng)理辦公室系統(tǒng)集成部客人前臺接待員. .行為模式o職責(zé)鏈模式 ( Chain of Reponsibility)o命令模式 (Command)o解釋器模式 (Interpreter)o迭代子模式 (Iterator)o調(diào)停者模式 (Mediator)o備忘錄模式 (Memento)o觀察者模式觀察者模式 (Observer)o狀態(tài)模式 (State)o策略模式 (Strategy)o模板方法模式 (Template Method)o參觀者模式 (
13、Visitor). .觀察者模式o 發(fā)布-訂閱o 一個主題,多個觀察者o 主題發(fā)生變化是,多個觀察者被通知o Java和.net都有默認(rèn)實現(xiàn). .示例類圖. .示例代碼. .行為模式o職責(zé)鏈模式 ( Chain of Reponsibility)o命令模式 (Command)o解釋器模式 (Interpreter)o迭代子模式 (Iterator)o調(diào)停者模式 (Mediator)o備忘錄模式 (Memento)o觀察者模式 (Observer)o狀態(tài)模式 (State)o策略模式策略模式 (Strategy)o模板方法模式 (Template Method)o觀察者模式 (Visitor).
14、 .策略模式o 針對一組算法,定義一個公共的接口,而將算法的不同實現(xiàn)方式封裝到單獨的類中. .行為模式o職責(zé)鏈模式 ( Chain of Reponsibility)o命令模式 (Command)o解釋器模式 (Interpreter)o迭代子模式 (Iterator)o調(diào)停者模式 (Mediator)o備忘錄模式 (Memento)o觀察者模式 (Observer)o狀態(tài)模式 (State)o策略模式 (Strategy)o模板方法模式模板方法模式 (Template Method)o觀察者模式 (Visitor). .模板方法模式o 在較高的抽象層次定義一組操作o 定義了抽象操作之間的執(zhí)行
15、關(guān)系. .目標(biāo)o 了解面向?qū)ο笤O(shè)計的基本原則o 了解設(shè)計模式概念及常用的設(shè)計模式o 了解框架的概念及設(shè)計原則了解框架的概念及設(shè)計原則o 掌握設(shè)計模式的學(xué)習(xí)方法. .什么是框架?o 解決某一特定領(lǐng)域的問題o 由一組接口和類組成o 好萊塢原則:Dont call us, well call youo 凍點(Frozen Spots)o 熱點(Hot Spots) o 框架的重用性o 框架的可擴(kuò)展性. .一個優(yōu)秀的框架式如何產(chǎn)生的1. 抽象(抽象很難一次實現(xiàn))2. 類的職責(zé)分配3. 代碼的重構(gòu)4. 重復(fù)以上步驟. .目標(biāo)o 了解面向?qū)ο笤O(shè)計的基本原則o 了解設(shè)計模式概念及常用的設(shè)計模式o 了解框架的概念及設(shè)計原則o 掌握設(shè)計模式的學(xué)習(xí)方法掌握設(shè)計模式的學(xué)習(xí)方法. .設(shè)計模式學(xué)習(xí)的基礎(chǔ)o 熟悉面向?qū)ο蟮幕靖拍睿ɡ^承,封裝,多態(tài))o 熟悉面向?qū)ο蟮幕驹瓌to 熟悉UML常用靜態(tài)關(guān)系-泛化,組合,關(guān)聯(lián). .設(shè)計模式學(xué)習(xí)的方法和原則o 看成熟框架的開源代碼,逆向工程o 實踐-思考-實踐-思考o(jì) 一個循環(huán)上升的過程o 原則n 了解設(shè)計模式能解決哪些問題n 不要為了模式而模式. .Q&AAny question?.
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療領(lǐng)域中基于區(qū)塊鏈的信任體系構(gòu)建
- 區(qū)塊鏈賦能金融安全與融資共舞
- Axure RP 互聯(lián)網(wǎng)產(chǎn)品原型設(shè)計課件 第4章 使用元件和元件庫
- 以人工智能為核心用區(qū)快鏈技術(shù)的去中心化商業(yè)解決方案
- 代辦會議合同范例
- 光纜安裝維修合同范例
- 企業(yè)內(nèi)部審計的數(shù)字化轉(zhuǎn)型基于區(qū)塊鏈技術(shù)的探索與實踐
- 創(chuàng)新醫(yī)療健康數(shù)據(jù)管理模式與隱私保護(hù)實踐
- 小區(qū)垃圾問題
- 會計教育培訓(xùn)合同范例
- 糖尿病視網(wǎng)膜病變專家共識
- 第四單元 資本主義制度的確立 說課課件-高一下學(xué)期統(tǒng)編版(2019)必修中外歷史綱要下
- 2024-2025學(xué)年七年級地理下冊 7.4 俄羅斯課時1說課稿 (新版)新人教版
- 國家助學(xué)貸款還款救助歸檔材料清單
- 11《杠桿》教學(xué)設(shè)計-2023-2024學(xué)年科學(xué)五年級下冊人教鄂教版
- 2024版惡性腫瘤患者營養(yǎng)治療指南解讀課件
- 陽光心理-健康人生小學(xué)生心理健康主題班會課件
- 樂理知識考試題庫130題(含答案)
- 2025屆四川省成都市高三上學(xué)期畢業(yè)班摸底測試(零診)歷史試題(解析版)
- YB 4019-1991 輕燒菱鎂礦粉化學(xué)分析方法檸檬酸法測定輕燒菱鎂礦粉的活性
- 路面工程練習(xí)試卷1(共101題)
評論
0/150
提交評論