分別用一句話概括常見(jiàn)的設(shè)計(jì)模式

  • 創(chuàng)建型 :一個(gè)對(duì)象的創(chuàng)建

    1. 單例:允許存在一個(gè)且僅存在一個(gè)給定類(lèi)的實(shí)例

    2. 工廠方法:定義一個(gè)用于創(chuàng)建對(duì)象的接口,但讓實(shí)現(xiàn)這個(gè)接口的類(lèi)來(lái)決定實(shí)例化哪個(gè)類(lèi)

      (封裝對(duì)象創(chuàng)建過(guò)程,提升創(chuàng)建對(duì)象方法的復(fù)用性)

    3. 抽象工廠:提供一個(gè)用于創(chuàng)建相關(guān)對(duì)象族的接口,而無(wú)需指定具體的類(lèi)

      (如何找到正確的抽象)

    4. 建造者模式:將復(fù)雜對(duì)象的構(gòu)建和其表示分離,以便同一個(gè)構(gòu)造過(guò)程可以創(chuàng)建不同的標(biāo)識(shí)

    5. 原型模式:使用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),然后通過(guò)拷貝這些原型來(lái)創(chuàng)建新的對(duì)象

      (原型提供拷貝入口;調(diào)用拷貝入口返回副本)

  • 結(jié)構(gòu)型 :多個(gè)對(duì)象的關(guān)系,即多個(gè)對(duì)象之間的組合方式

    1. 代理模式:給一個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制原對(duì)象的引用

      (和裝飾器有點(diǎn)相似,代理控制對(duì)象訪問(wèn),但是裝飾器是改變對(duì)象行為)

    2. 橋接模式:將抽象與實(shí)現(xiàn)分離,使它們都可以獨(dú)立變

      (橫向擴(kuò)展)

    3. 裝飾器模式:動(dòng)態(tài)的為一個(gè)對(duì)象添加新功能,同時(shí)又不改變其結(jié)構(gòu),相當(dāng)于對(duì)現(xiàn)有對(duì)象進(jìn)行了一個(gè)包裝

      (動(dòng)態(tài)擴(kuò)展,避免大量子類(lèi)派生)

    4. 適配器模式:將類(lèi)的接口轉(zhuǎn)為客戶期望的另一個(gè)接口,適配器可以讓不兼容的兩個(gè)類(lèi)一起協(xié)調(diào)工作

      (轉(zhuǎn)換)

    5. 門(mén)面模式:為子系統(tǒng)中的一組接口提供統(tǒng)一的接口。它定義了一個(gè)更高級(jí)別的接口,使子系統(tǒng)更容易使用

      (簡(jiǎn)化外部系統(tǒng)使用內(nèi)部多個(gè)子系統(tǒng)的使用方式)

    6. 組合模式:將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示整個(gè)部分的層次結(jié)構(gòu)。讓用戶統(tǒng)一對(duì)待單個(gè)對(duì)象和對(duì)象的組合

      (表達(dá)部分與整體關(guān)系,統(tǒng)一對(duì)待,通常是一種樹(shù)形結(jié)構(gòu))

    7. 享元模式:共享實(shí)例,減少內(nèi)存使用

      (找出相似特性,復(fù)用特性;享元模式強(qiáng)調(diào)空間效率,緩存強(qiáng)調(diào)時(shí)間效率)

  • 行為型:對(duì)象的內(nèi)部算法和職責(zé)劃分

    1. 觀察者模式:定義對(duì)象之間一對(duì)多依賴(lài)關(guān)系,對(duì)象改變狀態(tài)時(shí),所有依賴(lài)項(xiàng)都會(huì)自動(dòng)得到通知和更新

      (發(fā)布-訂閱)

    2. 模板模式:在操作中定義算法的框架,將一些步驟推遲到子類(lèi)中

      (算法框架,流程框架)

    3. 策略模式:定義一系列算法,封裝每個(gè)算法,并使它們可以互換

      (客戶決定使用哪些策略)

    4. 責(zé)任鏈模式:為請(qǐng)求創(chuàng)建一個(gè)接收此請(qǐng)求對(duì)象的鏈

      (構(gòu)建流水線,一一處理請(qǐng)求)

    5. 迭代器模式:提供一種對(duì)容器對(duì)象中的各個(gè)元素進(jìn)行訪問(wèn)的方法,而又不暴露該對(duì)象內(nèi)部細(xì)節(jié)

      (將訪問(wèn)和遍歷的職責(zé)從集合對(duì)象中分離出來(lái),放入編著的協(xié)議對(duì)象中)

    6. 狀態(tài)模式:允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為

      (找到合適的抽象狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移關(guān)系,通過(guò)改變狀態(tài)來(lái)改變行為的目的)

    7. 訪問(wèn)者模式:允許在運(yùn)行時(shí)將一個(gè)或者多個(gè)操作作用于一組對(duì)象,將操作與對(duì)象結(jié)構(gòu)分離

      (分離對(duì)象結(jié)構(gòu)和對(duì)象操作;動(dòng)態(tài)擴(kuò)展一組對(duì)象的行為)

    8. 備忘錄模式:保持一個(gè)對(duì)象的某個(gè)狀態(tài),以便在適當(dāng)?shù)臅r(shí)候恢復(fù)對(duì)象

      (快照模式)

    9. 命令模式:將請(qǐng)求封裝成對(duì)象,以便使用不通的請(qǐng)求

      (分離命令者和執(zhí)行者;操作封裝在對(duì)象中,簡(jiǎn)單說(shuō)就是函數(shù)方法封裝成對(duì)象方便傳輸,類(lèi)似java8函數(shù)作為參數(shù)傳遞)

    10. 解釋器模式:用于定義語(yǔ)言的語(yǔ)法規(guī)則表示,并提供解釋器來(lái)處理句子中的語(yǔ)法

    (為了解釋一門(mén)語(yǔ)言,而為語(yǔ)言創(chuàng)建的解釋器)

    1. 中介模式:封裝了一組對(duì)象的交互,這組對(duì)象會(huì)將他們的交互委托給中介者對(duì)象,而不是直接交互

      (中介者起到中轉(zhuǎn)和協(xié)調(diào)作用,主要是提供了減少對(duì)象質(zhì)檢耦合度的思路)

最后編輯于
?著作權(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)容