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

下載本文檔

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

文檔簡(jiǎn)介

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

2、到類的抽象 從子類到父類的抽象,基 本概念,2,面向?qū)ο缶幊?繼承(Inheritance) 繼承是子類使用父類的方法 ,Object-Oriented Programming,封裝(Encapsulate) 隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開接口 ,多態(tài)(Polymorphism) 接口的多種不同的實(shí)現(xiàn)方式即為多態(tài) ,3 大特征,3,面向?qū)ο缶幊?依賴(Dependency) 類之間的調(diào)用關(guān)系 ,Object-Oriented Programming,關(guān)聯(lián)(Association) 類之間的特定對(duì)應(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) 對(duì)擴(kuò)

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論