重溫設(shè)計(jì)模式

設(shè)計(jì)模式

創(chuàng)建型設(shè)計(jì)模式:
1.簡(jiǎn)單工廠模式(Simple Factory Pattern):專門定義一個(gè)類(工廠類)來負(fù)責(zé)創(chuàng)建其他類的實(shí)例??梢愿鶕?jù)創(chuàng)建方法的參數(shù)來返回不同類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。
備注:簡(jiǎn)單工廠模式,設(shè)計(jì)上是一個(gè)工廠類,負(fù)責(zé)不同實(shí)例的創(chuàng)建。即if else 或者說是switch case 版本

2.工廠方法模式(Factory Method Pattern):又稱為工廠模式,工廠父類負(fù)責(zé)定義創(chuàng)建產(chǎn)品對(duì)象的公共接口,而工廠子類則負(fù)責(zé)生成具體的產(chǎn)品對(duì)象,即通過不同的工廠子類來創(chuàng)建不同的產(chǎn)品對(duì)象。
備注:具有了父工廠與子工廠的概念。父工廠類負(fù)責(zé)定義抽象接口,子工廠類負(fù)責(zé)具體實(shí)現(xiàn)

3.抽象工廠模式(Abstract Factory Pattern:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無須指定它們具體的類。
備注:抽象工廠本質(zhì)就是:抽象工廠和具體工廠,抽象產(chǎn)品實(shí)例和具體產(chǎn)品實(shí)例,具體工廠生產(chǎn)具體產(chǎn)品實(shí)例
參考:https://blog.csdn.net/carson_ho/article/details/54910287

4.單例模式(Singleton Pattern):?jiǎn)卫J酱_保某一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問它的全劇訪問點(diǎn)。
備注:在聲明周期內(nèi),保證內(nèi)存只有一個(gè)實(shí)例對(duì)象

5.生成器模式(Builder Pattern):也叫創(chuàng)建者模式,它將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
備注:builder模式,就是將一個(gè)復(fù)雜的對(duì)象構(gòu)建分離成細(xì)粒度的組成

6.原型模式:(Prototype Pattern): 使用原型實(shí)例指定待創(chuàng)建對(duì)象的類型,并且通過復(fù)制這個(gè)原型來創(chuàng)建新的對(duì)象。
備注:原型設(shè)計(jì)模式主要是拷貝,通過原型實(shí)例,拷貝出新的實(shí)例對(duì)象,進(jìn)行加工修改

結(jié)構(gòu)型設(shè)計(jì)模式:
1.外觀模式(Facade Pattern):外觀模式定義了一個(gè)高層接口,為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的接口。外觀模式又稱為門面模式,它是一種結(jié)構(gòu)型設(shè)計(jì)模式模式
備注:外觀設(shè)計(jì)模式本質(zhì)是將對(duì)事物的處理相關(guān)操作放在一個(gè)統(tǒng)一的地方進(jìn)行管理。

2.適配器模式(Adapter Pattern) :將一個(gè)接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。適配器模式的別名是包裝器模式(Wrapper),是一種結(jié)構(gòu)型設(shè)計(jì)模式。
備注:適配器模式相當(dāng)于說Adapter作為中轉(zhuǎn)器,在不修改外部接口的情況下,通過Adapter包裝的方式,使用新的接口進(jìn)行工作。

3.橋接模式(Simple Factory Pattern):將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。
備注:某個(gè)類具有兩個(gè)或者兩個(gè)以上的維度變化,可以自由組合。

4.代理模式(Proxy Pattern) :為某個(gè)對(duì)象提供一個(gè)代理,并由這個(gè)代理對(duì)象控制對(duì)原對(duì)象的訪問。
備注:將原對(duì)象的控制委托給其他代理處理

5.裝飾模式(Decorator Pattern) :不改變?cè)袑?duì)象的前提下,動(dòng)態(tài)地給一個(gè)對(duì)象增加一些額外的功能。
備注:對(duì)于原有對(duì)象的修改,不是采用繼承方式,而是使用持有原對(duì)象,增加額外功能的方式

6.享元模式(Flyweight Pattern):運(yùn)用共享技術(shù)復(fù)用大量細(xì)粒度的對(duì)象,降低程序內(nèi)存的占用,提高程序的性能。
備注:本質(zhì)上是一個(gè)先從緩存獲取數(shù)據(jù),如果沒有,再從內(nèi)存獲取數(shù)據(jù)的思想

行為型設(shè)計(jì)模式
1.在模板模式(Template Method Pattern)中,定義一個(gè)操作中的算法的框架,而將一些步驟的執(zhí)行延遲到子類中,使得子類可以在不改變算法的結(jié)構(gòu)的前提下即可重新定義該算法的某些特定步驟。
備注:本質(zhì)上是父類定義一些列的方法,子類根據(jù)自身需要進(jìn)行實(shí)現(xiàn)和覆蓋

2.策略模式(Strategy Pattern):定義一系列算法,將每一個(gè)算法封裝起來,并讓它們可以相互替換。
備注:本質(zhì)上是將方法抽象,將具體抽象的方式實(shí)現(xiàn)拋給不同判斷的實(shí)體。其實(shí)就是對(duì)if else 的深層次封裝

3.責(zé)任鏈模式(Chain of Responsibility Pattern):為請(qǐng)求創(chuàng)建了一個(gè)接收者對(duì)象的鏈,每個(gè)接收者都包含對(duì)另一個(gè)接收者的引用。如果一個(gè)對(duì)象不能處理該請(qǐng)求,那么它會(huì)把相同的請(qǐng)求傳給下一個(gè)接收者,依此類推。
備注:責(zé)任鏈,就是鏈?zhǔn)秸{(diào)用,一層一層的將消息傳遞。步驟:先構(gòu)造責(zé)任鏈,然后是調(diào)用責(zé)任鏈。需要兩個(gè)元素:鏈條構(gòu)造者和鏈條實(shí)現(xiàn)這

4.狀態(tài)模式(State Pattern):允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí),改變它的行為。
備注:對(duì)象根據(jù)狀態(tài)改變其行為

5.命令模式(Command Pattern):命令(或請(qǐng)求)被封裝成對(duì)象。客戶端將命令(或請(qǐng)求)對(duì)象先傳遞給調(diào)用對(duì)象。調(diào)用對(duì)象再把該命令(或請(qǐng)求)對(duì)象傳給合適的,可處理該命令(或請(qǐng)求)的對(duì)象來做處理。
備注:對(duì)命令的封裝,命令構(gòu)成:消息、消息的觸發(fā)者、消息的接收者,即生成一條消息,由觸發(fā)者將消息發(fā)送給接收者。

6.觀察者模式(Observer Pattern):定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,使得每當(dāng)一個(gè)對(duì)象狀態(tài)發(fā)生改變時(shí),其相關(guān)依賴對(duì)象都可以到通知并做相應(yīng)針對(duì)性的處理。
備注:Observer、通知

7.中介者模式(Mediator Pattern):用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互,中介者使各對(duì)象之間不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。
備注:初始化一個(gè)中介者對(duì)象,讓幾個(gè)不同的對(duì)象持有相同的中介者對(duì)象,從而讓不同對(duì)象的交互通過中介進(jìn)行傳遞。

其他
1.組合模式(Composite):將對(duì)象組合成樹形結(jié)構(gòu)以表示‘部分-整體’的層次結(jié)構(gòu)。組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。
備注:即構(gòu)建樹形結(jié)構(gòu),將對(duì)象描述更加層次化

2.備忘錄模式(Memento):在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣以后就可將該對(duì)象恢復(fù)到原先保存的狀態(tài)。
備注:保存對(duì)象狀態(tài),并在需要的時(shí)候恢復(fù)到之前的狀態(tài)

3.迭代器模式(Iterator):提供一種方法順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不暴露該對(duì)象的內(nèi)部表示。
備注:類似iOS的Block迭代、數(shù)組迭代都是迭代器模式的典型實(shí)現(xiàn)。

3.解釋器模式(Interpreter):給定一個(gè)語言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來解釋語言中的句子。

4.訪問者模式(Visitor):表示一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類(男人,女人)的前提下定義作用于這些元素的新操作(喜怒哀樂)。他把數(shù)據(jù)結(jié)構(gòu)(男人,女人)和作用于數(shù)據(jù)結(jié)構(gòu)之上的操作(喜怒哀樂)之間的耦合解脫開,使得操作集合可以相對(duì)自由地演化

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容