溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于c++設(shè)計(jì)模式的總結(jié)

發(fā)布時(shí)間:2020-06-21 14:56:15 來(lái)源:網(wǎng)絡(luò) 閱讀:3032 作者:GaoNeil 欄目:編程語(yǔ)言

關(guān)于c++設(shè)計(jì)模式的總結(jié)

關(guān)于c++設(shè)計(jì)模式的總結(jié)
抽象工廠,決定產(chǎn)品系列的產(chǎn)品的組合,特點(diǎn)是創(chuàng)建同一款式的產(chǎn)品系列。缺點(diǎn)是增加產(chǎn)品組件,需要修改抽象工廠接口,影響抽象工廠子類。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
builder,決定產(chǎn)品的各個(gè)部分的build的過(guò)程。替換相應(yīng)的builder子類,就可以修改產(chǎn)品相應(yīng)的各個(gè)part部件的實(shí)現(xiàn);替換相應(yīng)的Director子類,就可以修改builder組件的調(diào)用順序(即控制創(chuàng)建過(guò)程)。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
工廠方法,產(chǎn)品子類和creator子類一 一對(duì)應(yīng)。不直接調(diào)用FactoryMethod操作,定義了何時(shí)調(diào)用FactoryMethod。擴(kuò)展相關(guān)子類可以修改此調(diào)用時(shí)間

關(guān)于c++設(shè)計(jì)模式的總結(jié)
Prototype,產(chǎn)品自身就是自己的creator

關(guān)于c++設(shè)計(jì)模式的總結(jié)
Singleton,產(chǎn)生全局的單一實(shí)例

1)以上是創(chuàng)建型:創(chuàng)建型設(shè)計(jì)模式核心是通過(guò)替換直接調(diào)用new創(chuàng)建具體對(duì)象這種方式,從而去client代碼和產(chǎn)品對(duì)象之間的耦合。client都是通過(guò)接口引用工廠,通過(guò)接口引用產(chǎn)品,所以替換更方便。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
adapter,描述了client如何做到通過(guò)target接口,來(lái)使用Adaptee的操作函數(shù)。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
bridge,“抽象接口定義”和“具體實(shí)現(xiàn)部分”分離。分離后,可以各自發(fā)展。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
composite,從共同接口派生,使對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性,并且支持遞歸組合。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
關(guān)于c++設(shè)計(jì)模式的總結(jié)
Decorator,共同的父類,接口相同,可以透明的、遞歸的增加額外的職責(zé)。與composite區(qū)別是只有一個(gè)組件。與strategy區(qū)別是Decorator修飾component的外觀,strategy提取分離component的內(nèi)部策略實(shí)現(xiàn)。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
fa?ade,分層的概念中,層與層之間提供統(tǒng)一、集中的接口。
使不同層的對(duì)象不會(huì)出現(xiàn)網(wǎng)狀交織。這樣各層可以獨(dú)立發(fā)展。fa?ade對(duì)象承擔(dān)上層請(qǐng)求轉(zhuǎn)發(fā)給下層對(duì)應(yīng)對(duì)象。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
關(guān)于c++設(shè)計(jì)模式的總結(jié)
flyweight,分離對(duì)象的內(nèi)部、外部狀態(tài),使得大量細(xì)粒度對(duì)象可以共享,節(jié)省存儲(chǔ)空間

關(guān)于c++設(shè)計(jì)模式的總結(jié)
關(guān)于c++設(shè)計(jì)模式的總結(jié)
proxy,proxy是Realsubject接口的子集或者相同接口,從而代替Realsubject。proxy來(lái)控制Realsubject,而不是client直接控制和訪問(wèn)Realsubject。這樣proxy可以對(duì)Realsubject進(jìn)行各種額外的控制。

2)以上是結(jié)構(gòu)性模式。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
chain of responsibility,每個(gè)在鏈上的對(duì)象都有一致的處理請(qǐng)求和訪問(wèn)鏈上后繼者的接口。鏈?zhǔn)絺鬟f請(qǐng)求,使得請(qǐng)求的發(fā)送者和接收者解耦。
直到某個(gè)處理

關(guān)于c++設(shè)計(jì)模式的總結(jié)
command,把請(qǐng)求封裝為一個(gè)command對(duì)象,雖然抽象的接口一致,但是可以派生各種command子類。command對(duì)象中包含了對(duì)接收者的引用、和調(diào)用接收者的一系列操作,通過(guò)動(dòng)態(tài)創(chuàng)建command子類對(duì)象以及創(chuàng)建時(shí)傳入不同的接收者引用,可以達(dá)到動(dòng)態(tài)配置(參數(shù)化)請(qǐng)求的目的。進(jìn)而實(shí)現(xiàn)上下文相關(guān)的菜單。Command模式將調(diào)用操作的對(duì)象與知道如何實(shí)現(xiàn)該操作的對(duì)象解耦。增加新的Command變得很容易。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
interpreter,解釋器和文法表示分開(kāi)。定義一種文法,定義一個(gè)解釋器用抽象語(yǔ)法樹(shù)輔助解釋文法。同樣的接口派生而來(lái),以便遞歸組合,實(shí)現(xiàn)抽象的語(yǔ)法樹(shù)。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
iterator,將對(duì)聚合對(duì)象的“訪問(wèn)和遍歷”從聚合對(duì)象中分離出來(lái),并放入到一個(gè)iterator對(duì)象中。對(duì)client隱藏了composite的內(nèi)部組織。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
關(guān)于c++設(shè)計(jì)模式的總結(jié)
Mediator,控制和協(xié)調(diào)一組對(duì)象間的交互,對(duì)象只跟中介相連,對(duì)象間不直接相連,從而減少連接數(shù)。方便對(duì)象獨(dú)立發(fā)展。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
Memento,向originator請(qǐng)求一個(gè)保存了內(nèi)部狀態(tài)的Memento,后面需要恢復(fù)時(shí),傳回此Memento給Originator,從而Originator恢復(fù)回之前狀態(tài),并且不保留Originator的內(nèi)部細(xì)節(jié)

關(guān)于c++設(shè)計(jì)模式的總結(jié)
observer,subject狀態(tài)改變時(shí),通知各個(gè)observer。兩者獨(dú)立發(fā)展,通過(guò)抽象接口調(diào)用,減少兩者耦合。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
state,把各個(gè)行為封裝在接口一致的各個(gè)狀態(tài)對(duì)象中,所以改變狀態(tài)時(shí),行為得到改變。并且把請(qǐng)求委托給他的狀態(tài)對(duì)象來(lái)處理。state模式將與“特定狀態(tài)”相關(guān)的行為局部化,并且將不同狀態(tài)的行為分割開(kāi)來(lái)。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
strategy,物理結(jié)構(gòu)和算法分離,算法封裝在一個(gè)獨(dú)立對(duì)象中。

關(guān)于c++設(shè)計(jì)模式的總結(jié)
template method,定義算法骨架,但一些具體實(shí)現(xiàn)由子類定義。把公共的操作過(guò)程,做成模板

關(guān)于c++設(shè)計(jì)模式的總結(jié)
visitor,對(duì)象中包含多個(gè)不同接口類型的子對(duì)象。訪問(wèn)操作封裝為獨(dú)立對(duì)象。結(jié)構(gòu)對(duì)象和操作對(duì)象分離

3)以上是行為型模式。

對(duì)設(shè)計(jì)模式有興趣的話,更詳細(xì)的總結(jié),可看我的ppt。

或者請(qǐng)參考《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書
英文版《Design Patterns: Elements of Reusable Object-Oriented Software》

另外我的相關(guān)培訓(xùn)視頻請(qǐng)看:
歡迎觀看我發(fā)布的各個(gè)課程: https://edu.51cto.com/lecturer/8896847.html

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI