某市場(chǎng)設(shè)計(jì)模式實(shí)踐_第1頁(yè)
某市場(chǎng)設(shè)計(jì)模式實(shí)踐_第2頁(yè)
某市場(chǎng)設(shè)計(jì)模式實(shí)踐_第3頁(yè)
某市場(chǎng)設(shè)計(jì)模式實(shí)踐_第4頁(yè)
某市場(chǎng)設(shè)計(jì)模式實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、設(shè)計(jì)模式、框架及其實(shí)踐張永吉. .怎樣成為一個(gè)象棋高手?o 第一步,學(xué)習(xí)基本規(guī)則o 第二步,學(xué)習(xí)取勝的原理這時(shí),你說你已經(jīng)學(xué)會(huì)下棋學(xué)會(huì)下棋了o 但是,你要想成為一個(gè)象棋高手,除了多下棋和善于總結(jié)經(jīng)驗(yàn)以外,一個(gè)重要的途徑就是看高手們的棋譜,學(xué)習(xí)、理解、記憶和應(yīng)用高手們總結(jié)的布局和定式o 這里的布局和定式就相當(dāng)于我們說的模式,有幾百種。. .怎樣成為一個(gè)軟件設(shè)計(jì)高手?o 第一步,學(xué)習(xí)基本規(guī)則。例如,數(shù)據(jù)結(jié)構(gòu)、各種算法、編程語言等。o 第二步,學(xué)習(xí)軟件設(shè)計(jì)的原理和方法。例如,結(jié)構(gòu)程序設(shè)計(jì)、模塊化方法、面向?qū)ο蟮脑O(shè)計(jì)方法等。這時(shí),你已經(jīng)可以說學(xué)會(huì)軟件設(shè)計(jì)學(xué)會(huì)軟件設(shè)計(jì)了。o 但是,你要想成為一個(gè)軟件設(shè)計(jì)

2、的高手,除了多動(dòng)手和自己善于總結(jié)經(jīng)驗(yàn)總結(jié)經(jīng)驗(yàn)以外,一個(gè)重要的途徑就是看軟件設(shè)計(jì)的高手們的軟件,學(xué)習(xí)、理解、記憶和重復(fù)應(yīng)用軟件設(shè)計(jì)模式。o 這種模式很多,有幾百種。. .目標(biāo)o 了解面向?qū)ο笤O(shè)計(jì)的基本原則了解面向?qū)ο笤O(shè)計(jì)的基本原則o 了解設(shè)計(jì)模式概念及常用的設(shè)計(jì)模式o 了解框架的概念及設(shè)計(jì)原則o 掌握設(shè)計(jì)模式的學(xué)習(xí)方法. .內(nèi)容o 面向?qū)ο笤O(shè)計(jì)開發(fā)的基本原則o 設(shè)計(jì)模式概念、分類及常用設(shè)計(jì)模式o 框架概念及設(shè)計(jì)原則o 設(shè)計(jì)模式的運(yùn)用實(shí)例n油品計(jì)算框架n基于Jexcel的簡(jiǎn)易報(bào)表開發(fā)框架nJunit 設(shè)計(jì). .面向?qū)ο笤O(shè)計(jì)原則o 開閉原則o 針對(duì)接口編程原則o 高內(nèi)聚-低耦合原則o 最少知識(shí)原則o

3、 類的單一職責(zé)原則o 依賴倒置原則o 里氏代換原則. .開閉原則o 擴(kuò)展系統(tǒng)的行為時(shí),不需要修改以前的代碼,而是擴(kuò)展以前的代碼o 針對(duì)修改關(guān)閉o 針對(duì)擴(kuò)展開放o 提高代碼的可維護(hù)性. .針對(duì)接口編程原則o 接口是高層的抽象o 接口可以隱藏實(shí)現(xiàn)的細(xì)節(jié)o 接口可以清晰指出對(duì)象的職責(zé)o 接口是實(shí)現(xiàn)軟件pluggable的關(guān)鍵o 松散耦合o 增加重用的可能性. .類的單一職責(zé)原則o 一個(gè)類只做一件事o 一個(gè)類的職責(zé)僅僅有一個(gè)原因而發(fā)生改變o 例:如一個(gè)界面展示類夾雜業(yè)務(wù)邏輯代碼或者數(shù)據(jù)數(shù)據(jù)庫(kù)聯(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)致錯(cuò)誤. .目標(biāo)o 了解面向?qū)ο笤O(shè)計(jì)的基本原則o 了解設(shè)計(jì)模式概念及常用的設(shè)計(jì)模式了解設(shè)計(jì)模式概念及常用的設(shè)計(jì)模式o 了解框架的概念及設(shè)計(jì)原則o 掌握設(shè)計(jì)模式的學(xué)習(xí)方法

5、. .設(shè)計(jì)模式o 為什么使用設(shè)計(jì)模式?o 什么是設(shè)計(jì)模式?o 如何描述一個(gè)設(shè)計(jì)模式?o 如何選擇一個(gè)設(shè)計(jì)模式?o 設(shè)計(jì)模式的分類. .為什么使用設(shè)計(jì)模式?o 僵化性(Rigidity):設(shè)計(jì)難以改變。 o 脆弱性(Fragility):設(shè)計(jì)易于遭到破壞。 o 牢固性(Immobility):設(shè)計(jì)難以重用。 o 粘滯性(Viscosity):難以做正確的事情。 o 不必要的復(fù)雜性(Needless Complexity):過分設(shè)計(jì)。 o 不必要的重復(fù)(Needless Repetition):過多的重復(fù)。 o 晦澀性(Opacity):混亂的表達(dá)。. .什么是設(shè)計(jì)模式?o 面向?qū)ο笤O(shè)計(jì)經(jīng)驗(yàn)的總結(jié)

6、和理論化抽象o 描述了軟件設(shè)計(jì)過程中經(jīng)常碰到的問題及其解決方案核心。. .如何描述一個(gè)設(shè)計(jì)模式?o 意圖o 別名o 動(dòng)機(jī)o 適用性o 結(jié)構(gòu)o 參與者o 協(xié)作o 效果o 實(shí)現(xiàn)o 代碼示例o 已知應(yīng)用o 相關(guān)模式. .如何選擇一個(gè)設(shè)計(jì)模式?o 了解每一個(gè)設(shè)計(jì)模式所解決的問題o 了解模式的靜態(tài)結(jié)構(gòu)o 了解模式的動(dòng)態(tài)結(jié)構(gòu)o 查看當(dāng)前設(shè)計(jì)系統(tǒng)易變的部分. .設(shè)計(jì)模式的分類o 創(chuàng)建者模式n 有關(guān)對(duì)象創(chuàng)建的模式o 結(jié)構(gòu)型模式n 描述對(duì)象構(gòu)造和組成的方式o 行為模式n 描述一組對(duì)象交互的方式. .創(chuàng)建者模式o 簡(jiǎn)單工廠模式 (Simple Factory)o 工廠方法 (Factory Method)o 抽象

7、工廠 (Abstract Factory)o 建造者模式 (Builder)o 原型模式 (Prototype)o 單例模式 (Singleton). .工廠模式o 封裝對(duì)象(產(chǎn)品)的構(gòu)建過程. .一般的對(duì)象創(chuàng)建方式o Noodle noodle = new Noodle();o Bread bread = new Bread();o Rice rice = new Rice();o o o . .使用工廠創(chuàng)建對(duì)象. .餐廳里供應(yīng)的菜譜. .簡(jiǎn)單工廠o 簡(jiǎn)單工廠-手工作坊,個(gè)體戶o 生產(chǎn)面包,米飯,面條o 所有的產(chǎn)品都有一個(gè)大師傅制作. .簡(jiǎ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 東北面包,東北面條,東北米飯. .抽象工廠類圖. .更好的工廠實(shí)現(xiàn)方法o 基于反射的實(shí)現(xiàn)方式o 采用xml或數(shù)據(jù)庫(kù)保存類的配置信息o Spring的Bean工廠. .SpringBean工廠示例. .工廠模式的總結(jié)o 簡(jiǎn)單工廠模式不滿足開閉原則o 工廠方法模式對(duì)增加新產(chǎn)品支持開閉原則o 抽象工廠對(duì)增加新的產(chǎn)品系列滿足開閉原則. .建造者模式o 解決一個(gè)

9、復(fù)雜對(duì)象的構(gòu)造過程o 一碗蘭州拉面由面條,湯,肉,香菜組成. .原型模式o 通過復(fù)制對(duì)象的方式來創(chuàng)建對(duì)象o Java和.net均提供了對(duì)原型模式的直接支持. .單例模式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 把一個(gè)類的接口轉(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 外部與一個(gè)子系統(tǒng)的通信僅通過一個(gè)門面類進(jìn)行。市場(chǎng)部銷售部財(cái)務(wù)部經(jīng)理辦公室系統(tǒng)集成部客人前臺(tái)接待員. .行為模式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 一個(gè)主題,多個(gè)觀察者o 主題發(fā)生變化是,多個(gè)觀察者被通知o Java和.net都有默認(rèn)實(shí)現(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 針對(duì)一組算法,定義一個(gè)公共的接口,而將算法的不同實(shí)現(xiàn)方式封裝到單獨(dú)的類中. .行為模式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è)計(jì)的基本原則o 了解設(shè)計(jì)模式概念及常用的設(shè)計(jì)模式o 了解框架的概念及設(shè)計(jì)原則了解框架的概念及設(shè)計(jì)原則o 掌握設(shè)計(jì)模式的學(xué)習(xí)方法. .什么是框架?o 解決某一特定領(lǐng)域的問題o 由一組接口和類組成o 好萊塢原則:Dont call us, well call youo 凍點(diǎn)(Frozen Spots)o 熱點(diǎn)(Hot Spots) o 框架的重用性o 框架的可擴(kuò)展性. .一個(gè)優(yōu)秀的框架式如何產(chǎn)生的1. 抽象(抽象很難一次實(shí)現(xiàn))2. 類的職責(zé)分配3. 代碼的重構(gòu)4. 重復(fù)以上步驟. .目標(biāo)o 了解面向?qū)ο笤O(shè)計(jì)的基本原則o 了解設(shè)計(jì)模式概念及常用的設(shè)計(jì)模式o 了解框架的概念及設(shè)計(jì)原則o 掌握設(shè)計(jì)模式的學(xué)習(xí)方法掌握設(shè)計(jì)模式的學(xué)習(xí)方法. .設(shè)計(jì)模式學(xué)習(xí)的基礎(chǔ)o 熟悉面向?qū)ο蟮幕靖拍睿ɡ^承,封裝,多態(tài))o 熟悉面向?qū)ο蟮幕驹瓌to 熟悉UML常用靜態(tài)關(guān)系-泛化,組合,關(guān)聯(lián). .設(shè)計(jì)模式學(xué)習(xí)的方法和原則o 看成熟框架的開源代碼,逆向工程o 實(shí)踐-思考-實(shí)踐-思考o(jì) 一個(gè)循環(huán)上升的過程o 原則n 了解設(shè)計(jì)模式能解決哪些問題n 不要為了模式而模式. .Q&AAny question?.

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論