一句話設(shè)計(jì)模式——快速掌握23種設(shè)計(jì)模式的核心思想(上)

《一句話設(shè)計(jì)模式》的想法起源于前段時(shí)間為一個(gè)培訓(xùn)機(jī)構(gòu)上課的時(shí)候,每講完一個(gè)設(shè)計(jì)模式我都會(huì)用一句話總結(jié)。總結(jié)往往不是“將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化”這種晦澀抽象的表達(dá),而是通俗的表述最核心的部分。

這篇文章不適合深入學(xué)習(xí)設(shè)計(jì)模式,因?yàn)闆](méi)有代碼,沒(méi)有模式擴(kuò)展。

正確的使用方式:1. 初學(xué)者在深入學(xué)習(xí)之前先留下一個(gè)粗略的印象。2. 已經(jīng)系統(tǒng)學(xué)習(xí)了設(shè)計(jì)模式的人快速回顧。

簡(jiǎn)單工廠模式

核心思想:將類的創(chuàng)建過(guò)程與對(duì)象的使用過(guò)程分離。

簡(jiǎn)單工廠模式

具體實(shí)現(xiàn)過(guò)程:定義一個(gè)工廠,根據(jù)參數(shù)(通常是字符串)的不同返回不同類的實(shí)例。因?yàn)槲覀兿M麑⒐S生產(chǎn)的對(duì)象可以使用相同的方式處理,所以產(chǎn)品類類通常會(huì)實(shí)現(xiàn)相同的接口。

工廠方法模式

核心思想:簡(jiǎn)單工廠基礎(chǔ)上,通過(guò)實(shí)例化不同的工廠,來(lái)創(chuàng)建不同的類。

工廠方法模式

具體實(shí)現(xiàn)過(guò)程:在簡(jiǎn)單工廠的基礎(chǔ)上,對(duì)工廠進(jìn)行抽象,將類的創(chuàng)建過(guò)程延遲到工廠的子類中完成。這樣做的好處是當(dāng)需要新增加一個(gè)新的產(chǎn)品類的時(shí)候,只需要新增一個(gè)“具體的工廠”就可以,而不需要像簡(jiǎn)單工廠一樣,修改工廠類的具體實(shí)現(xiàn)。符合“開(kāi)閉原則”。

抽象工廠模式

核心思想:工廠方法基礎(chǔ)上,讓一個(gè)工廠生產(chǎn)一類對(duì)象。

抽象工廠模式

具體實(shí)現(xiàn)過(guò)程:在工廠方法的基礎(chǔ)上,在一個(gè)具體工廠中實(shí)現(xiàn)生產(chǎn)不同產(chǎn)品的方法??梢赃_(dá)到方便生產(chǎn)一個(gè)“產(chǎn)品簇”的目的。

建造者模式

核心思想:定義一個(gè)建造過(guò)程,具體的建造放在子類當(dāng)中,這樣可以使用相同的建造過(guò)程構(gòu)造不同的實(shí)例。

建造者模式

原型模式

核心思想:使用Object類的clone方法,快速?gòu)?fù)制對(duì)象。

原型模式

單例模式

核心思想:讓一個(gè)類自身持有其實(shí)例的成員變量,聲明為staticprivate,來(lái)達(dá)到系統(tǒng)中只有一個(gè)實(shí)例的目的。

單例模式

具體實(shí)現(xiàn)過(guò)程:為了確保全系統(tǒng)只有一個(gè)實(shí)例,所以不可以讓用戶自己創(chuàng)建,所以這個(gè)類需要一個(gè)private的構(gòu)造函數(shù)。還需要一個(gè)getInstance()方法用來(lái)獲得這個(gè)唯一的實(shí)例,因?yàn)樾枰谙到y(tǒng)的每一處都能獲得,所以這個(gè)方法應(yīng)該是public的。因?yàn)檎{(diào)用的getInstance()的目的是獲取實(shí)例,只能在類上面調(diào)用,所以getInstance()應(yīng)該是static的。

適配器模式

核心思想:創(chuàng)建一個(gè)適配器類可以同時(shí)具備有現(xiàn)有類的行為,和期望的接口。

對(duì)象適配器模式

具體實(shí)現(xiàn)過(guò)程:分為兩種情況

  1. 類適配器:適配器類實(shí)現(xiàn)期望的接口,繼承現(xiàn)有的類已獲得他的行為(方法)。
  2. 對(duì)象適配器:適配器類實(shí)現(xiàn)期望的接口,并持有現(xiàn)有類的實(shí)例,通過(guò)實(shí)例調(diào)用方法。
    目的都是相同的。

橋接模式

核心思想:使用組合或者聚合的方式處理抽象和實(shí)現(xiàn)之間的聯(lián)系,讓具體的實(shí)現(xiàn)在不同維度上變化

橋接模式

組合模式

核心思想:讓具體類和這些類的容器實(shí)現(xiàn)同一個(gè)接口,用戶調(diào)用到容器類時(shí)使用遞歸調(diào)用,不需要區(qū)分這兩者的區(qū)別。

組合模式

外觀模式

核心思想:在外觀類內(nèi)實(shí)現(xiàn)具體的操作,用戶只需要和外觀類打交道,屏蔽方法調(diào)用細(xì)節(jié)。

外觀模式

享元模式

核心思想:建一個(gè)對(duì)象池,復(fù)用需要在系統(tǒng)中多次出現(xiàn)的對(duì)象。

裝飾模式

核心思想:,裝飾器和被裝飾的對(duì)象有相同的接口,裝飾器在使用時(shí)獲得被裝飾的對(duì)象,為其增加新的操作。

裝飾模式

具體實(shí)現(xiàn)過(guò)程:不論是具體的組件,和裝飾過(guò)后的組件,都希望可以用相同過(guò)的方式使用,所以實(shí)現(xiàn)同一個(gè)接口。裝飾類需要持有一個(gè)具體組件的實(shí)例,才能調(diào)用他的方法,所以需要一個(gè)聚合關(guān)聯(lián)。

代理模式

核心思想:代理類持有具體實(shí)現(xiàn)類的實(shí)例,將在代理類上的操作轉(zhuǎn)化為實(shí)例上方法的調(diào)用。

代理模式
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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