天天看點

經典軟體設計模式分類大全

作者:風趣生命的起源

模式的分類

設計模式根據其複雜性、詳細程度和适用于整個正在設計的系統的規模而有所不同。可以将其比作道路建設:你可以通過安裝交通信号燈或建造整個多層立交橋以及地下通道來使交叉口更安全。

最基本和低層次的模式通常被稱為慣用法。它們通常隻适用于單一的程式設計語言。

最通用和高層次的模式是架構模式。開發人員可以在幾乎任何語言中實作這些模式。與其他模式不同,它們可以用于設計整個應用程式的架構。

此外,所有模式可以根據其意圖或目的進行分類。涵蓋了三個主要的模式組:

  • 建立型模式提供了增加靈活性和重用現有代碼的對象建立機制。
  • 結構型模式解釋了如何将對象和類組合成更大的結構,同時保持這些結構的靈活性和效率。
  • 行為型模式負責有效的通信和對象之間的責任配置設定。
經典軟體設計模式分類大全

建立型模式

建立型設計模式提供了各種對象建立機制,增加了現有代碼的靈活性和重用性。

工廠方法模式(Factory Method):為超類提供了一個建立對象的接口,但允許子類改變将被建立的對象的類型。

經典軟體設計模式分類大全

抽象工廠模式(Abstract Factory):允許您在不指定具體類的情況下生成一組相關對象的模式。

經典軟體設計模式分類大全

建造者模式(Builder):允許您逐漸建構複雜對象的模式。該模式允許您使用相同的建構代碼生成不同類型和表示的對象。

經典軟體設計模式分類大全

原型模式(Prototype):允許您複制現有對象而不使您的代碼依賴于它們的類的模式。

經典軟體設計模式分類大全

單例模式(Singleton):確定一個類隻有一個執行個體,并提供對該執行個體的全局通路點的模式。

經典軟體設計模式分類大全

結構型設計模式

結構型設計模式解釋了如何将對象和類組合成更大的結構,同時保持這些結構的靈活性和高效性。

擴充卡模式(Adapter):允許具有不相容接口的對象進行協作的模式。

經典軟體設計模式分類大全

橋接模式(Bridge):将一個大類或一組緊密相關的類分割成兩個獨立的層次結構(抽象和實作),使它們可以互相獨立地進行開發的模式。

經典軟體設計模式分類大全

複合模式(Composite):将對象組合成樹狀結構,然後以與單個對象相同的方式處理這些結構的模式。

經典軟體設計模式分類大全

裝飾器模式(Decorator):将具有特定行為的對象放置在包含這些行為的特殊包裝對象中,進而使您可以向對象附加新的行為的模式。

經典軟體設計模式分類大全

外觀模式(Facade):為庫、架構或任何其他複雜的類集合提供簡化的接口的模式。

經典軟體設計模式分類大全

享元模式(Flyweight):通過在多個對象之間共享狀态的公共部分,而不是在每個對象中保留所有資料,可以将更多對象适應可用的記憶體量的模式。

經典軟體設計模式分類大全

代理模式(Proxy):提供另一個對象的替代或占位符的模式。代理控制對原始對象的通路,允許您在請求傳遞到原始對象之前或之後執行某些操作。

經典軟體設計模式分類大全

行為型設計模式

行為型設計模式關注算法和對象之間責任的配置設定。

責任鍊模式(Chain of Responsibility):允許你将請求沿着一條處理器鍊傳遞。每個處理器在接收到請求後決定是處理該請求還是将其傳遞給鍊中的下一個處理器。

經典軟體設計模式分類大全

指令模式(Command):将請求轉換為獨立的對象,該對象包含有關請求的所有資訊。通過這種轉換,您可以将請求作為方法參數傳遞、延遲或排隊請求的執行,并支援可撤銷的操作。

經典軟體設計模式分類大全

疊代器模式(Iterator):讓您周遊集合的元素,而不暴露其底層表示(如清單、堆棧、樹等)。

經典軟體設計模式分類大全

中介者模式(Mediator):減少對象之間混亂的依賴關系。該模式限制了對象之間的直接通信,并強制它們隻能通過中介者對象進行協作。

經典軟體設計模式分類大全

備忘錄模式(Memento):在不透露其實作細節的情況下,儲存和恢複對象的先前狀态。

經典軟體設計模式分類大全

觀察者模式(Observer):定義訂閱機制,以通知多個觀察對象有關它們所觀察的對象發生的任何事件。

經典軟體設計模式分類大全

狀态模式(State):當對象的内部狀态發生變化時,允許對象改變其行為。它看起來就像對象改變了它的類。

經典軟體設計模式分類大全

政策模式(Strategy):定義一族算法,将每個算法都封裝在獨立的類中,并使它們的對象可互換使用。

經典軟體設計模式分類大全

模闆方法模式(Template Method):在超類中定義算法的骨架,但允許子類在不改變其結構的情況下覆寫特定的步驟。

經典軟體設計模式分類大全

通路者模式(Visitor):将算法與其操作的對象分離開來。

經典軟體設計模式分類大全

繼續閱讀