23種設計模式 概述

2022-05-30 22:42:11 字數 1494 閱讀 5444

單例(singleton)模式:某個類只能生成乙個例項,該類提供了乙個全域性訪問點供外部獲取該例項,其拓展是有限多例模式。

原型(prototype)模式:將乙個物件作為原型,通過對其進行複製而轉殖出多個和原型類似的新例項。

工廠方法(factory method)模式:定義乙個用於建立產品的介面,由子類決定生產什麼產品。

抽象工廠(abstractfactory)模式:提供乙個建立產品族的介面,其每個子類可以生產一系列相關的產品。

建造者(builder)模式:將乙個複雜物件分解成多個相對簡單的部分,然後根據不同需要分別建立它們,最後構建成該複雜物件。

**(proxy)模式:為某物件提供一種**以控制對該物件的訪問。即客戶端通過**間接地訪問該物件,從而限制、增強或修改該物件的一些特性。

介面卡(adapter)模式:將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。

橋接(bridge)模式:將抽象與實現分離,使它們可以獨立變化。它是用組合關係代替繼承關係來實現,從而降低了抽象和實現這兩個可變維度的耦合度。

裝飾(decorator)模式:動態的給物件增加一些職責,即增加其額外的功能。

外觀(facade)模式:為多個複雜的子系統提供乙個一致的介面,使這些子系統更加容易被訪問。

享元(flyweight)模式:運用共享技術來有效地支援大量細粒度物件的復用。

組合(composite)模式:將物件組合成樹狀層次結構,使使用者對單個物件和組合物件具有一致的訪問性。

模板方法(templatemethod)模式:定義乙個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。

策略(strategy)模式:定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的改變不會影響使用演算法的客戶。

命令(command)模式:將乙個請求封裝為乙個物件,使發出請求的責任和執行請求的責任分割開。

職責鏈(chain of responsibility)模式:把請求從鏈中的乙個物件傳到下乙個物件,直到請求被響應為止。通過這種方式去除物件之間的耦合。

狀態(state)模式:允許乙個物件在其內部狀態發生改變時改變其行為能力。

觀察者(observer)模式:多個物件間存在一對多關係,當乙個物件發生改變時,把這種改變通知給其他多個物件,從而影響其他物件的行為。

中介者(mediator)模式:定義乙個中介物件來簡化原有物件之間的互動關係,降低系統中物件間的耦合度,使原有物件之間不必相互了解。

迭代器(iterator)模式:提供一種方法來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。

訪問者(visitor)模式:在不改變集合元素的前提下,為乙個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者物件訪問。

備忘錄(memento)模式:在不破壞封裝性的前提下,獲取並儲存乙個物件的內部狀態,以便以後恢復它。

直譯器(interpreter)模式:提供如何定義語言的文法,以及對語言句子的解釋方法,即直譯器。

23種設計模式概述

在我們軟體開發的過程中往往會遇到需求的變更,導致我們的功能需要的改變,進而可能讓我們辛辛苦苦編寫的大量 付諸東流。那麼,該怎樣提高我們 的可擴充套件性呢。提高我們 的擴充套件性這樣在改變功能的時候就能在最小代價的情況修改我們的 設計模式,就很大程度上為我們解決了這個問題。設計模式是一套理論,由前任總...

GoF23種設計模式概述

設計模式的經典名著 design patterns elements of reusable object oriented software,中譯本名為 設計模式 可復用物件導向軟體的基礎 的四位作者erich gamma richard helm ralph johnson,以及john vli...

23種設計模式概述(分類和原則)

設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類的 設計經驗的總結。使用設計模式的目的 為了 可重用性 讓 更容易被他人理解 保證 可靠性。設計模式使 編寫真正工程化 設計模式是 軟體工程 的基石脈絡。建立型模式 5鐘,物件例項化的模式,建立型模式用於解耦物件的例項化...