《設(shè)計(jì)模式筆記》之02模式分類

《設(shè)計(jì)模式筆記》之02模式分類

模式可以分為三大類:創(chuàng)建型模式(Creational Patterns)、結(jié)構(gòu)型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。

創(chuàng)建型模式


這些設(shè)計(jì)模式提供了一種在創(chuàng)建對(duì)象的同時(shí)隱藏創(chuàng)建邏輯的方式,而不是使用 new 運(yùn)算符直接實(shí)例化對(duì)象。這使得程序在判斷針對(duì)某個(gè)給定實(shí)例需要?jiǎng)?chuàng)建哪些對(duì)象時(shí)更加靈活。

  • 工廠模式(Factory Pattern)

    定義一個(gè)用于創(chuàng)建產(chǎn)品的接口,由子類決定生產(chǎn)什么產(chǎn)品。

  • 抽象工廠模式(Abstract Factory Pattern)

    提供一個(gè)創(chuàng)建產(chǎn)品族的接口,其每個(gè)子類可以生產(chǎn)一系列相關(guān)的產(chǎn)品。

  • 單例模式(Singleton Pattern)

    某個(gè)類只能生成一個(gè)實(shí)例,該類提供了一個(gè)全局訪問(wèn)點(diǎn)供外部獲取該實(shí)例,其拓展是有限多例模式。

  • 建造者模式(Builder Pattern)

    將一個(gè)復(fù)雜對(duì)象分解成多個(gè)相對(duì)簡(jiǎn)單的部分,然后根據(jù)不同需要分別創(chuàng)建它們,最后構(gòu)建成該復(fù)雜對(duì)象。

  • 原型模式(Prototype Pattern)

    將一個(gè)對(duì)象作為原型,通過(guò)對(duì)其進(jìn)行復(fù)制而克隆出多個(gè)和原型類似的新實(shí)例。

結(jié)構(gòu)型模式


這些設(shè)計(jì)模式關(guān)注類和對(duì)象的組合。繼承的概念被用來(lái)組合接口和定義組合對(duì)象獲得新功能的方式。

  • 適配器模式(Adapter Pattern)

    將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。

  • 橋接模式(Bridge Pattern)

    將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立變化。它是用組合關(guān)系代替繼承關(guān)系來(lái)實(shí)現(xiàn)的,從而降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度。

  • 組合模式(Composite Pattern)

    將對(duì)象組合成樹狀層次結(jié)構(gòu),使用戶對(duì)單個(gè)對(duì)象和組合對(duì)象具有一致的訪問(wèn)性。

  • 裝飾器模式(Decorator Pattern)

    動(dòng)態(tài)地給對(duì)象增加一些職責(zé),即增加其額外的功能。

  • 外觀模式(Facade Pattern)

    為多個(gè)復(fù)雜的子系統(tǒng)提供一個(gè)一致的接口,使這些子系統(tǒng)更加容易被訪問(wèn)。

  • 享元模式(Flyweight Pattern)

    運(yùn)用共享技術(shù)來(lái)有效地支持大量細(xì)粒度對(duì)象的復(fù)用。

  • 代理模式(Proxy Pattern)

    為某對(duì)象提供一種代理以控制對(duì)該對(duì)象的訪問(wèn)。即客戶端通過(guò)代理間接地訪問(wèn)該對(duì)象,從而限制、增強(qiáng)或修改該對(duì)象的一些特性。

行為型模式

這些設(shè)計(jì)模式特別關(guān)注對(duì)象之間的通信。

  • 責(zé)任鏈模式(Chain of Responsibility Pattern)

    把請(qǐng)求從鏈中的一個(gè)對(duì)象傳到下一個(gè)對(duì)象,直到請(qǐng)求被響應(yīng)為止。通過(guò)這種方式去除對(duì)象之間的耦合。

  • 命令模式(Command Pattern)

    將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,使發(fā)出請(qǐng)求的責(zé)任和執(zhí)行請(qǐng)求的責(zé)任分割開。

  • 迭代器模式(Iterator Pattern)

    提供一種方法來(lái)順序訪問(wèn)聚合對(duì)象中的一系列數(shù)據(jù),而不暴露聚合對(duì)象的內(nèi)部表示。

  • 中介者模式(Mediator Pattern)

    定義一個(gè)中介對(duì)象來(lái)簡(jiǎn)化原有對(duì)象之間的交互關(guān)系,降低系統(tǒng)中對(duì)象間的耦合度,使原有對(duì)象之間不必相互了解。

  • 備忘錄模式(Memento Pattern)

    在不破壞封裝性的前提下,獲取并保存一個(gè)對(duì)象的內(nèi)部狀態(tài),以便以后恢復(fù)它。

  • 觀察者模式(Observer Pattern)

    多個(gè)對(duì)象間存在一對(duì)多關(guān)系,當(dāng)一個(gè)對(duì)象發(fā)生改變時(shí),把這種改變通知給其他多個(gè)對(duì)象,從而影響其他對(duì)象的行為。

  • 狀態(tài)模式(State Pattern)

    允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)發(fā)生改變時(shí)改變其行為能力。

  • 策略模式(Strategy Pattern)

    定義了一系列算法,并將每個(gè)算法封裝起來(lái),使它們可以相互替換,且算法的改變不會(huì)影響使用算法的客戶。

  • 訪問(wèn)者模式(Visitor Pattern)

    在不改變集合元素的前提下,為一個(gè)集合中的每個(gè)元素提供多種訪問(wèn)方式,即每個(gè)元素有多個(gè)訪問(wèn)者對(duì)象訪問(wèn)。

  • 模板方法模式(Template Method)

    定義一個(gè)操作中的算法骨架,將算法的一些步驟延遲到子類中,使得子類在可以不改變?cè)撍惴ńY(jié)構(gòu)的情況下重定義該算法的某些特定步驟。

  • 解釋器模式(Interpreter)

    提供如何定義語(yǔ)言的文法,以及對(duì)語(yǔ)言句子的解釋方法,即解釋器。

?著作權(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)容