设计模式学习笔记——目录
? ?最近一直在看設(shè)計(jì)模式,GOF23種設(shè)計(jì)模式反復(fù)理解中,設(shè)計(jì)模式確實(shí)對面向?qū)ο缶幊逃泻艽髱椭?#xff01;
? ?1)了解UML類圖中泛化、實(shí)現(xiàn)、依賴、關(guān)聯(lián)、聚合、組合關(guān)系
? ?2)每種設(shè)計(jì)模式的特點(diǎn)和概念是什么,它解決了一個(gè)什么樣的問題、它的優(yōu)缺點(diǎn)是什么!每個(gè)設(shè)計(jì)模式,至少能舉出一個(gè)場景,可加深記憶。
? ?3)了解面向?qū)ο缶幊痰娜匦浴⑵咴瓌t和六視點(diǎn)
? ?最終目標(biāo):說出一種設(shè)計(jì)模式就能知道是解決了一個(gè)什么樣的問題,他的業(yè)務(wù)模型(類圖)是怎樣的,根據(jù)業(yè)務(wù)模型,可直接實(shí)現(xiàn)編碼。
? ?特點(diǎn)、概念、類圖、場景舉例、程序?qū)崿F(xiàn)。這五個(gè)環(huán)節(jié)下來基本對設(shè)計(jì)模式可以有較深刻的理解。
? ?設(shè)計(jì)模式按類型可分為三種:創(chuàng)建型、結(jié)構(gòu)型和行為性。
創(chuàng)建型:
(1)單例:只需一個(gè)實(shí)例時(shí)考慮。
(2)工廠方法:一般先用工廠方法解決對象創(chuàng)建問題。
(3)抽象工廠:當(dāng)工廠方法無法滿足多系列問題時(shí),再重構(gòu)為抽象工廠。
(4)建造者:多個(gè)部件的建造實(shí)現(xiàn)相同,只是所需部件、建造順序不同時(shí)考慮。
(5)原型:在初始化信息不發(fā)生變化時(shí)考慮。
結(jié)構(gòu)型:
(1)適配器:讓接口不相容的類能協(xié)同工作。(亡羊補(bǔ)牢)
(2)裝飾:動態(tài)增加單個(gè)對象的額外職責(zé),比生成子類更靈活。
(3)橋接:使繼承關(guān)系更改為組合關(guān)系,使兩者可獨(dú)立變化。(未雨綢繆)
(4)組合:用樹狀結(jié)構(gòu)表示“整體-部分”的層次關(guān)系,使單個(gè)對象(葉節(jié)點(diǎn))與組合對象(枝節(jié)點(diǎn))的使用具有一致性。
(5)享元:為運(yùn)用共享技術(shù),支持大量細(xì)粒度對象,節(jié)省開銷。
(6)代理:控制對單個(gè)對象的訪問。
(7)外觀:子系統(tǒng)的高層接口,避免兩個(gè)類直接關(guān)系的第三者。
行為型:
(1)觀察者:一對多依賴關(guān)系,一端變化、多端得到通知并自動更新。(目標(biāo)與觀察者可實(shí)現(xiàn)弱耦合)
(2)模板方法:繼承+重寫解決代碼重復(fù)問題。
(3)命令:將請求發(fā)送者與具體實(shí)現(xiàn)者解耦,可對請求排列、取消、重做,支持事務(wù)。(多請求,單處理)
(4)職責(zé)鏈:將處理者排成鏈,沿鏈傳遞請求。(單請求,多處理)
(5)狀態(tài):當(dāng)對象內(nèi)狀態(tài)改變而執(zhí)行不同操作時(shí)考慮,狀態(tài)轉(zhuǎn)移邏輯不在if/switch中,而在各子類之間,增/改狀態(tài)和狀態(tài)轉(zhuǎn)換較容易。
(6)解釋器:若某特定問題發(fā)生的頻率足夠高時(shí)考慮,需定義文法表示與解釋器本身。
(7)中介者:由中介封裝一系列對象交互,減少對象間耦合,利于復(fù)用。(朋友多)
(8)訪問者:當(dāng)Element較穩(wěn)定、Visitor易增加時(shí)考慮。(朋友在精不在多)
(9)策略:將一系列算法逐個(gè)封裝并可相互替換,易于切換、理解、擴(kuò)展。
(10)備忘錄:不破壞封裝,又要取該對象內(nèi)狀態(tài),且要求狀態(tài)還原時(shí)考慮。(保持封裝邊界)
(11)迭代器:將對集合的訪問與遍歷從集合對象中分離出來到迭代器中。
轉(zhuǎn)載于:https://www.cnblogs.com/ice-baili/p/4651429.html
總結(jié)
以上是生活随笔為你收集整理的设计模式学习笔记——目录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入super,看Python如何解决钻
- 下一篇: 教程-经典Delphi教程网