系統(tǒng)架構(gòu)設(shè)計(jì)師知識(shí)清單7
第7章 23種設(shè)計(jì)模式
這一章內(nèi)容對(duì)于軟件工程師來(lái)說(shuō)是非常重要的,在綜合知識(shí)考試中通常考的不是很難,有基礎(chǔ)的理解即可(至少要知道模式名所屬的類型和基本應(yīng)用),也很適合寫進(jìn)論文里(在設(shè)計(jì)架構(gòu)時(shí),系統(tǒng)某個(gè)部分功能的使用了某種/某些設(shè)計(jì)模式實(shí)現(xiàn),簡(jiǎn)單說(shuō)明一下原因和效果)。
1 設(shè)計(jì)模式的組成元素
模式名、問(wèn)題/意圖、情景、動(dòng)機(jī)、解決方案、示例、結(jié)果情景、基本原理、相關(guān)模式、已知應(yīng)用
2 設(shè)計(jì)模式分類
創(chuàng)建型:抽象對(duì)象實(shí)例化過(guò)程
結(jié)構(gòu)型:如何組合已有的類和對(duì)象
行為型:對(duì)象之間的職責(zé)及其提供的服務(wù)的分配
創(chuàng)建型包括5種
(1)抽象工廠模式(Abstract Factory):在不指定具體類的情況下,為創(chuàng)建一系列相關(guān)或相互依賴的對(duì)象提供一個(gè)接口
(2)工廠模式(Factory):不修改代碼的情況下引入新類
(3)建造者模式(Builder):將復(fù)雜對(duì)象的構(gòu)建與其具體表示相分離
(4)原型模式(Prototype):在不了解要?jiǎng)?chuàng)建對(duì)象的類以及如何創(chuàng)建等細(xì)節(jié)情況下創(chuàng)建對(duì)象
(5)單例模式(Singleton):確保一個(gè)類只有一個(gè)實(shí)例
結(jié)構(gòu)型包括7種
(1)適配器模式(Adapter):充當(dāng)兩個(gè)類之間的媒介,使具有不同接口的類協(xié)同使用
(2)橋接模式(Bridge):將一個(gè)復(fù)雜的組件分成兩個(gè)獨(dú)立但又相關(guān)的層次
(3)組合模式(Composite):創(chuàng)建樹型層次結(jié)構(gòu)來(lái)改變復(fù)雜性
(4)裝飾器模式(Decorator):不改變對(duì)象外觀和功能的情況下添加或者刪除對(duì)象功能
(5)外觀模式(Facade):為系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的接口
(6)享元模式(Flyweight):通過(guò)共享對(duì)象減少系統(tǒng)中的低等級(jí)低、詳細(xì)的對(duì)象數(shù)目(比如線程池、數(shù)據(jù)庫(kù)連接池)
(7)代理模式(Proxy):為控制對(duì)初始對(duì)象的訪問(wèn)提供一個(gè)代理或占位符
行為型包括11種
(1)責(zé)任鏈模式(Responsibility Chain):消息可以定位到處理它的對(duì)象
(2)命令模式模式(Command):通過(guò)執(zhí)行動(dòng)作來(lái)參數(shù)化對(duì)象
(3)解釋器模式(Interpreter):解釋定義其語(yǔ)法的語(yǔ)言
(4)迭代器模式(Iterator):為集合的有序訪問(wèn)提供了一致的方法(最典型的比如MapReduce中的Iterator)
(5)中介者模式(Mediator):管理對(duì)象間消息分布
(6)備忘錄模式(Mememto):保持對(duì)象狀態(tài)的快照,對(duì)象可以返回其最初狀態(tài)
(7)觀察者模式(Observer):廣播消息(比如vuex)
(8)狀態(tài)模式(State):對(duì)象在內(nèi)部狀態(tài)改變時(shí),變更具體行為,并且修改其類
(9)策略模式(Strategy):相似的類只在行為方面有所區(qū)別
(10)模版模式(Template):不修改算法結(jié)構(gòu)時(shí)讓子類重定義算法特定步驟
(11)訪問(wèn)者模式(Visitor):集中相關(guān)操作并排除不相關(guān)的操作