設(shè)計(jì)模式學(xué)習(xí)分享PPT學(xué)習(xí)課件_第1頁
設(shè)計(jì)模式學(xué)習(xí)分享PPT學(xué)習(xí)課件_第2頁
設(shè)計(jì)模式學(xué)習(xí)分享PPT學(xué)習(xí)課件_第3頁
設(shè)計(jì)模式學(xué)習(xí)分享PPT學(xué)習(xí)課件_第4頁
設(shè)計(jì)模式學(xué)習(xí)分享PPT學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、設(shè)計(jì)模式 Design Patterns,1,面向?qū)ο缶幊?對象(Object) 對問題領(lǐng)域中事物的抽象 萬物皆對象 唯一 屬性行為 狀態(tài) 屬于某類,Object-Oriented Programming,問題領(lǐng)域(Program Domain) 軟件系統(tǒng)所模擬的真實(shí)世界中的系統(tǒng) ,類(Class) 一組具有相同屬性和行為的對象的抽象 ,接口(Interface) 系統(tǒng)對外提供的所有服務(wù) 接口類型 描述能夠提供哪些服務(wù),不包含服務(wù)的實(shí)現(xiàn)細(xì)節(jié),抽象(Abstract) 從特定角度出發(fā),從已存在的一些事物中抽取所關(guān)注的特性,形成一個新的事物的思維過程 從問題領(lǐng)域的事物到軟件模型中對象的抽象 從對象

2、到類的抽象 從子類到父類的抽象,基 本概念,2,面向?qū)ο缶幊?繼承(Inheritance) 繼承是子類使用父類的方法 ,Object-Oriented Programming,封裝(Encapsulate) 隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外公開接口 ,多態(tài)(Polymorphism) 接口的多種不同的實(shí)現(xiàn)方式即為多態(tài) ,3 大特征,3,面向?qū)ο缶幊?依賴(Dependency) 類之間的調(diào)用關(guān)系 ,Object-Oriented Programming,關(guān)聯(lián)(Association) 類之間的特定對應(yīng)關(guān)系 ,聚集(Aggregation) 整體與部分之間的關(guān)系 ,泛化(Generalizat

3、ion) 類之間的繼承關(guān)系 ,實(shí)現(xiàn)(Realization) 類與接口之間的關(guān)系 ,5 種關(guān)系,4,單一職責(zé)原則(Single Responsibility Principle) 里氏替換原則(Liskov Substitution Principle) 依賴倒轉(zhuǎn)原則(Dependence Inversion Principle) 接口隔離原則(Interface Segregation Principle) 迪米特法則 (Demeter Principle) 合成復(fù)用原則(Composite Reuse Principle),總原則:開閉原則(Open Close Principle) 對擴(kuò)

4、展開放,對修改關(guān)閉 為了使程序的擴(kuò)展性好,易于維護(hù)和升級 在程序需要進(jìn)行拓展的時候,不能去修改原有代碼,而是要擴(kuò)展原有代碼,實(shí)現(xiàn)一個熱插拔效果,設(shè)計(jì)模式六大原則,6 大原則,5, 應(yīng)該有且僅有一個原因引起類的變更 ,類的復(fù)雜性降低 可讀性提高 可維護(hù)性提高 變更風(fēng)險(xiǎn)低,6, 所有引用基類的地方必須能透明地使用其子類的對象 ,子類必須完全實(shí)現(xiàn)父類的方法 子類可以有自己的個性 覆蓋或?qū)崿F(xiàn)父類的方法時輸入?yún)?shù)可以被放大(子類輸入?yún)?shù)的類型寬于父類) 覆寫或?qū)崿F(xiàn)父類的方法時輸出結(jié)果可以被縮小,7, 面向接口編程,依賴于抽象而不依賴于具體 ,高層模塊不應(yīng)該依賴底層模塊,兩者都應(yīng)該依賴其抽象 抽象不應(yīng)該依

5、賴細(xì)節(jié) 細(xì)節(jié)應(yīng)該依賴抽象,8, 接口盡量細(xì)化,同時接口中的方法盡量少 ,客戶端不應(yīng)該依賴它不需要的接口 類間的依賴關(guān)系應(yīng)該建立在最小的接口上 接口要盡量小 接口要高內(nèi)聚 定制服務(wù) 接口設(shè)計(jì)是有限度的,9, 一個對象應(yīng)該對其他對象有最少的了解 ,只和朋友交流 朋友間也是有距離的 不是自己的就是自己的 謹(jǐn)慎使用Serializable(序列化),10, 盡量使用合成/聚合的方式,而不是使用繼承 ,在面向?qū)ο笤O(shè)計(jì)中,可以通過兩種方法在不同的環(huán)境中復(fù)用已有的設(shè)計(jì)和實(shí)現(xiàn),即通過組合/聚合關(guān)系或通過繼承,但首先應(yīng)該考慮使用組合/聚合,組合/聚合可以使系統(tǒng)更加靈活,降低類與類之間的耦合度,一個類的變化對其他

6、類造成的影響相對較少;其次才考慮繼承,在使用繼承時,需要嚴(yán)格遵循里氏代換原則,有效使用繼承會有助于對問題的理解,降低復(fù)雜度,而濫用繼承反而會增加系統(tǒng)構(gòu)建和維護(hù)的難度以及系統(tǒng)的復(fù)雜度,因此需要慎重使用繼承復(fù)用,11,設(shè)計(jì)模式概覽,23 種模式,創(chuàng)建型模式 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式 結(jié)構(gòu)型模式 適配器模式 裝飾器模式 代理模式 門面模式 橋接模式 組合模式 享元模式 行為型模式 策略模式 模板方法模式 觀察者模式 迭代子模式 責(zé)任鏈模式 命令模式 備忘錄模式 狀態(tài)模式 訪問者模式 中介者模式 解釋器模式,12, 確保某一個類只有一個實(shí)例,而且自行實(shí)例化并向整個系統(tǒng)

7、提供這個實(shí)例 ,13, 定義一個用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個類,使一個類的實(shí)例化延遲到其子類 ,一個抽象產(chǎn)品類,可以派生出多個具體產(chǎn)品類 一個抽象工廠類,可以派生出多個具體工廠類 每個具體工廠類通常只能創(chuàng)建一個具體產(chǎn)品類的實(shí)例,14, 為創(chuàng)建一組相關(guān)或相互依賴的對象提供一個接口,而且無需指定他們的具體類 ,多個抽象產(chǎn)品類,每個抽象產(chǎn)品類可以派生出多個具體產(chǎn)品類 一個抽象工廠類,可以派生出多個具體工廠類 每個具體工廠類可以創(chuàng)建多個具體產(chǎn)品類的實(shí)例,15, 用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象 ,16,將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可

8、創(chuàng)建不同的表示,17, 使用共享對象可有效地支持大量的細(xì)粒度的對象 ,18, 為其他對象提供一種代理以控制對這個對象的訪問 ,19, 要求一個子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個統(tǒng)一的對象進(jìn)行。門面模式提供一個高層的接口,使得子系統(tǒng)更易于使用 ,20, 將一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作 ,21, 將抽象和實(shí)現(xiàn)解耦,使得兩者可以獨(dú)立地變化 ,22, 將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得用戶對單個對象和組合對象的使用具有一致性 ,23, 將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得用戶對單個

9、對象和組合對象的使用具有一致性 ,+,+,+,24, 定義一組算法,將每個算法都封裝起來,并且使它們之間可以互換 ,25, 當(dāng)對象的狀態(tài)改變時,同時改變其行為 ,26, 定義一個操作中的算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟 ,27, 定義對象間一種一對多的依賴關(guān)系,使得每當(dāng)一個對象改變狀態(tài),則所有依賴于它的對象都會得到通知并被自動更新 ,28, 它提供一種方法訪問一個容器對象中各個元素,而又不需暴露該對象內(nèi)部細(xì)節(jié) ,29, 使多個對象都有機(jī)會處理請求,從而避免了請求的發(fā)送者和接受者之間的耦合關(guān)系,并沿著這條鏈傳遞該請求,直到有對象處理它為止 ,30, 將一個請求封裝成一個對象,從而讓你使用不同的請求把客戶端參數(shù)化,對請求排隊(duì)或者記錄請求日志,可以提供命令的撤銷和恢復(fù)功能 ,31, 在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài) ,32, 封裝一些作用于某種數(shù)據(jù)結(jié)構(gòu)中的各元素的操作,它可以

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論