




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計模式與面向?qū)ο笤O(shè)計模式與面向?qū)ο竺嫦驅(qū)ο蟮膬蓚€方向性思維面向?qū)ο蟮膬蓚€方向性思維l向下,如何深入把握機器底層,從微觀理解對象構(gòu)造底層思維l語言構(gòu)造l編譯轉(zhuǎn)換l對象內(nèi)存模型l運行時機制l向上,如何將我們的周圍世界抽象為程序代碼抽象思維l面向?qū)ο髄組件封裝l設(shè)計模式l架構(gòu)模式深入理解面向?qū)ο笊钊肜斫饷嫦驅(qū)ο髄向下:深入理解三大面向?qū)ο髾C制l封裝,隱藏內(nèi)部實現(xiàn)l繼承,復(fù)用現(xiàn)有代碼l多態(tài),改寫對象行為l向上:深刻把握面向?qū)ο髾C制所帶來的抽象意義,理解如何使用這些機制來表達現(xiàn)實世界,掌握什么是“好的面向?qū)ο笤O(shè)計”軟件設(shè)計固有的復(fù)雜性軟件設(shè)計固有的復(fù)雜性l建筑商從來不會去想給一棟已建好的100層高的樓
2、房底下再新修一個小地下室這樣做花費極大而且注定要失敗。然而令人驚奇的是,軟件系統(tǒng)的用戶在要求作出類似改變時卻不會仔細(xì)考慮,而且他們認(rèn)為這只是需要簡單編程的事。lObject-Oriented Analysis and Design with Applications復(fù)雜性的幾個誘因復(fù)雜性的幾個誘因l問題領(lǐng)域的復(fù)雜性l客戶需求本身就很復(fù)雜,客戶與開發(fā)人員互相不理解l管理開發(fā)過程的困難l開發(fā)是由人完成的,人的組織、潛能存在巨大復(fù)雜性l軟件可能的靈活性l軟件為開發(fā)人員提供了極大的靈活性,而開發(fā)人員也很容易濫用這種靈活性l表征離散系統(tǒng)行為的困難l軟件系統(tǒng)本質(zhì)上是一個離散系統(tǒng),其復(fù)雜度要遠(yuǎn)遠(yuǎn)大于連續(xù)系統(tǒng)
3、。一個簡單的外部事件可能破壞整個系統(tǒng)軟件設(shè)計復(fù)雜的根本原因軟件設(shè)計復(fù)雜的根本原因l軟件設(shè)計復(fù)雜性的根本原因在于:變化l客戶需求的變化l技術(shù)平臺的變化l開發(fā)團隊的變化l市場環(huán)境的變化l。如何解決復(fù)雜性?l分解l人們面對復(fù)雜性有一個常見的做法:即分而治之,將大問題分解為多個小問題,將復(fù)雜問題分解為多個簡單問題。l抽象l更高層次來講,人們處理復(fù)雜性有一個通用的技術(shù),即抽象。由于不能掌握全部的復(fù)雜對象,我們選擇忽視它的非本質(zhì)細(xì)節(jié),而去處理泛化和理想化了的對象模型。兩種分解與抽象方法l結(jié)構(gòu)化程序設(shè)計系統(tǒng)中的每個模塊表示某個總體進程中的主要一步。l面向?qū)ο蟪绦蛟O(shè)計根據(jù)問題域中的關(guān)鍵抽象來分解系統(tǒng)。軟件設(shè)計
4、的目標(biāo)l什么是好的軟件設(shè)計?l軟件設(shè)計的金科玉律:復(fù)用!l面向?qū)ο笤O(shè)計,為什么?l變化是復(fù)用的天敵!l面向?qū)ο笤O(shè)計最大的優(yōu)勢在于:抵御變化重新認(rèn)識面向?qū)ο髄隔離變化l從宏觀層面來看,面向?qū)ο蟮臉?gòu)建方式更能適應(yīng)軟件的變化,能將變化所帶來的影響減為最小l各司其職l從微觀層面來看,面向?qū)ο蟮姆绞礁鼜娬{(diào)各個類的“責(zé)任”,新增員工類型不會影響原來員工類型的實現(xiàn)代碼這更符合真實的世界,也更能控制變化所影響的范圍l對象是什么?l從概念層面講,對象是某種擁有責(zé)任的抽象。l從規(guī)格層面講,對象是一系列可被使用的公共接口。l從語言實現(xiàn)層面來看,對象封裝了代碼和數(shù)據(jù)。調(diào)整軟件模塊間耦合關(guān)系l耦合關(guān)系直接決定著軟件面對
5、變化時的行為l模塊與模塊之間的緊耦合使得軟件面對變化時,相關(guān)的模塊都要隨之更改l模塊與模塊之間的松耦合使得軟件面對變化時,一些模塊更容易被替換或者更改,但其他模塊保持不變面向?qū)ο笤O(shè)計準(zhǔn)則l針對接口編程,而不是針對實現(xiàn)編程l客戶無需知道所使用對象的特定類型,只需要知道對象擁有客戶所期望的接口。l優(yōu)先使用對象組合,而不是類繼承l(wèi)類繼承通常為“白箱復(fù)用”,對象組合通常為“黑箱復(fù)用”l繼承在某種程度上破壞了封裝性,子類父類耦合度高;l對象組合則只要求被組合的對象具有良好定義的接口,耦合度低。l封裝變化點l使用封裝來創(chuàng)建對象之間的分界層,讓設(shè)計者可以在分界層的一側(cè)進行修改,而不會對另一側(cè)產(chǎn)生不良的影響,
6、從而實現(xiàn)層次間的松耦合。經(jīng)典面向?qū)ο笤O(shè)計原則l依賴倒置原則(DIP)l高層模塊(穩(wěn)定)不應(yīng)該依賴于低層模塊(變化),二者都應(yīng)該依賴于抽象。l抽象( 穩(wěn)定) 不應(yīng)該依賴于實現(xiàn)細(xì)節(jié)( 變化)l實現(xiàn)細(xì)節(jié)應(yīng)該依賴于抽象l開放封閉原則(OCP)l類模塊應(yīng)該是可擴展的,但是不可修改;對擴展開放,對更改封閉經(jīng)典面向?qū)ο笤O(shè)計原則l單一職責(zé)原則(SRP)l一個類應(yīng)該僅有一個引起它變化的原因。lLiskov 替換原則(LSP)l子類必須能夠替換它們的基類l接口隔離原則(ISP)l不應(yīng)該強迫客戶程序依賴于它們不用的方法設(shè)計模式簡介l每一個模式描述了一個在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的解決方案的核心。lCh
7、ristopher Alexanderl人是一個經(jīng)驗性的動物l設(shè)計模式描述了軟件設(shè)計過程中某一類常見問題的一般性的解決方案。l軟件設(shè)計模式是軟件領(lǐng)域設(shè)計經(jīng)驗的歸納與匯集。GoF 23 種設(shè)計模式l歷史性著作設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)一書中描述了23種經(jīng)典面向?qū)ο笤O(shè)計模式,創(chuàng)立了模式在軟件設(shè)計中的地位。l由于設(shè)計模式一書確定了設(shè)計模式的地位,通常所說的設(shè)計模式隱含地表示“面向?qū)ο笤O(shè)計模式”。但這并不意味“設(shè)計模式”就等于“面向?qū)ο笤O(shè)計模式”。面向?qū)ο笈c設(shè)計模式l面向?qū)ο笤O(shè)計模式解決的是“類與相互通信的對象之間的組織關(guān)系,包括它們的角色、職責(zé)、協(xié)作方式幾個方面。l面向?qū)ο笤O(shè)計模式是“好的面
8、向?qū)ο笤O(shè)計”,所謂“好的面向?qū)ο笤O(shè)計”是那些可以滿足“應(yīng)對變化,提高復(fù)用”的設(shè)計。l面向?qū)ο笤O(shè)計模式不像算法技巧,可以照搬照用,它是建立在對“面向?qū)ο蟆奔兪臁⑸钊氲睦斫獾幕A(chǔ)上的經(jīng)驗性認(rèn)識。掌握面向?qū)ο笤O(shè)計模式的前提是首先掌握“面向?qū)ο蟆?!恰?dāng)使用設(shè)計模式l“什么時候、什么地點應(yīng)用設(shè)計模式”比“理解設(shè)計模式結(jié)構(gòu)本身”更為重要。設(shè)計模式的應(yīng)用不宜先入為主,一上來就使用設(shè)計模式是對設(shè)計模式的最大誤用。沒有一步到位的設(shè)計模式。l現(xiàn)代軟件設(shè)計的特征是需求的頻繁變 “化”。如果沒有需求變化,便沒有面向?qū)ο?,更沒有“面向?qū)ο笤O(shè)計模式”。設(shè)計模式的要點便是“尋找變化點,然后在變化點處應(yīng)用設(shè)計模式,從而來更好低應(yīng)對需求的變化”模式分類l從目的來看:l創(chuàng)建型(Creational)模式:將對象的部分創(chuàng)建工作延遲到子類或者其他對象,從而應(yīng)對需求變化為對象創(chuàng)建時具體類型實現(xiàn)引來的沖擊。l結(jié)構(gòu)型(Structural)模式:通過類繼承或者對象組合
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人車間合同范例
- 個人隱私合同范例
- 二手車輛買賣合同范例
- 信號塔租賃到期合同范本
- 買賣機械配件合同范例
- 代理結(jié)算協(xié)議合同范例
- 上海保溫包采購合同范例
- 充氣器材租賃合同范例
- 個人注資合同范例
- 養(yǎng)牛人員合同范例
- 春運旅客心理狀況的調(diào)查分析與對策研究
- a04-hci深信服超融合配置指南_v1
- 醫(yī)藥代表培訓(xùn)教程(完整版)
- 雙重預(yù)防體系建設(shè)分析記錄表格
- 電子技術(shù)基礎(chǔ)(數(shù)字部分_第五版_康華光)華中科大課件第四章第4節(jié)
- 電力系統(tǒng)遠(yuǎn)動原理
- 論中小學(xué)管弦樂隊的組織與訓(xùn)練
- 煉鋼工藝操作說明
- 模擬電子技術(shù)基礎(chǔ)課后答案(完整版)
- 小學(xué)生讀書筆記模板(共10頁)
- 扁平化生活常用PPT圖標(biāo)素材
評論
0/150
提交評論