《設(shè)計模式筆記》之02模式分類
模式可以分為三大類:創(chuàng)建型模式(Creational Patterns)、結(jié)構(gòu)型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。
創(chuàng)建型模式
這些設(shè)計模式提供了一種在創(chuàng)建對象的同時隱藏創(chuàng)建邏輯的方式,而不是使用 new 運算符直接實例化對象。這使得程序在判斷針對某個給定實例需要創(chuàng)建哪些對象時更加靈活。
-
工廠模式(Factory Pattern)
定義一個用于創(chuàng)建產(chǎn)品的接口,由子類決定生產(chǎn)什么產(chǎn)品。
-
抽象工廠模式(Abstract Factory Pattern)
提供一個創(chuàng)建產(chǎn)品族的接口,其每個子類可以生產(chǎn)一系列相關(guān)的產(chǎn)品。
-
單例模式(Singleton Pattern)
某個類只能生成一個實例,該類提供了一個全局訪問點供外部獲取該實例,其拓展是有限多例模式。
-
建造者模式(Builder Pattern)
將一個復雜對象分解成多個相對簡單的部分,然后根據(jù)不同需要分別創(chuàng)建它們,最后構(gòu)建成該復雜對象。
-
原型模式(Prototype Pattern)
將一個對象作為原型,通過對其進行復制而克隆出多個和原型類似的新實例。
結(jié)構(gòu)型模式
這些設(shè)計模式關(guān)注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。
-
適配器模式(Adapter Pattern)
將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。
-
橋接模式(Bridge Pattern)
將抽象與實現(xiàn)分離,使它們可以獨立變化。它是用組合關(guān)系代替繼承關(guān)系來實現(xiàn)的,從而降低了抽象和實現(xiàn)這兩個可變維度的耦合度。
-
組合模式(Composite Pattern)
將對象組合成樹狀層次結(jié)構(gòu),使用戶對單個對象和組合對象具有一致的訪問性。
-
裝飾器模式(Decorator Pattern)
動態(tài)地給對象增加一些職責,即增加其額外的功能。
-
外觀模式(Facade Pattern)
為多個復雜的子系統(tǒng)提供一個一致的接口,使這些子系統(tǒng)更加容易被訪問。
-
享元模式(Flyweight Pattern)
運用共享技術(shù)來有效地支持大量細粒度對象的復用。
-
代理模式(Proxy Pattern)
為某對象提供一種代理以控制對該對象的訪問。即客戶端通過代理間接地訪問該對象,從而限制、增強或修改該對象的一些特性。
行為型模式
這些設(shè)計模式特別關(guān)注對象之間的通信。
-
責任鏈模式(Chain of Responsibility Pattern)
把請求從鏈中的一個對象傳到下一個對象,直到請求被響應(yīng)為止。通過這種方式去除對象之間的耦合。
-
命令模式(Command Pattern)
將一個請求封裝為一個對象,使發(fā)出請求的責任和執(zhí)行請求的責任分割開。
-
迭代器模式(Iterator Pattern)
提供一種方法來順序訪問聚合對象中的一系列數(shù)據(jù),而不暴露聚合對象的內(nèi)部表示。
-
中介者模式(Mediator Pattern)
定義一個中介對象來簡化原有對象之間的交互關(guān)系,降低系統(tǒng)中對象間的耦合度,使原有對象之間不必相互了解。
-
備忘錄模式(Memento Pattern)
在不破壞封裝性的前提下,獲取并保存一個對象的內(nèi)部狀態(tài),以便以后恢復它。
-
觀察者模式(Observer Pattern)
多個對象間存在一對多關(guān)系,當一個對象發(fā)生改變時,把這種改變通知給其他多個對象,從而影響其他對象的行為。
-
狀態(tài)模式(State Pattern)
允許一個對象在其內(nèi)部狀態(tài)發(fā)生改變時改變其行為能力。
-
策略模式(Strategy Pattern)
定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的改變不會影響使用算法的客戶。
-
訪問者模式(Visitor Pattern)
在不改變集合元素的前提下,為一個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者對象訪問。
-
模板方法模式(Template Method)
定義一個操作中的算法骨架,將算法的一些步驟延遲到子類中,使得子類在可以不改變該算法結(jié)構(gòu)的情況下重定義該算法的某些特定步驟。
-
解釋器模式(Interpreter)
提供如何定義語言的文法,以及對語言句子的解釋方法,即解釋器。