1. 程式人生 > 其它 >23種軟體設計模式

23種軟體設計模式

  1. 單例(Singleton)模式:某個類只能生成一個例項,該類提供了一個全域性訪問點供外部獲取該例項,其拓展是有限多例模式。
  2. 原型(Prototype)模式:將一個物件作為原型,通過對其進行復制而克隆出多個和原型類似的新例項。
  3. 工廠方法(Factory Method)模式:定義一個用於建立產品的介面,由子類決定生產什麼產品。
  4. 抽象工廠(AbstractFactory)模式:提供一個建立產品族的介面,其每個子類可以生產一系列相關的產品。
  5. 建造者(Builder)模式:將一個複雜物件分解成多個相對簡單的部分,然後根據不同需要分別建立它們,最後構建成該複雜物件。
  6. 代理(Proxy)模式:為某物件提供一種代理以控制對該物件的訪問。即客戶端通過代理間接地訪問該物件,從而限制、增強或修改該物件的一些特性。
  7. 介面卡(Adapter)模式:將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
  8. 橋接(Bridge)模式:將抽象與實現分離,使它們可以獨立變化。它是用組合關係代替繼承關係來實現,從而降低了抽象和實現這兩個可變維度的耦合度。
  9. 裝飾(Decorator)模式:動態的給物件增加一些職責,即增加其額外的功能。
  10. 外觀(Facade)模式:為多個複雜的子系統提供一個一致的介面,使這些子系統更加容易被訪問。
  11. 享元(Flyweight)模式:運用共享技術來有效地支援大量細粒度物件的複用。
  12. 組合(Composite)模式:將物件組合成樹狀層次結構,使使用者對單個物件和組合物件具有一致的訪問性。
  13. 模板方法(TemplateMethod)模式:定義一個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。
  14. 策略(Strategy)模式:定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的改變不會影響使用演算法的客戶。
  15. 命令(Command)模式:將一個請求封裝為一個物件,使發出請求的責任和執行請求的責任分割開。
  16. 職責鏈(Chain of Responsibility)模式:把請求從鏈中的一個物件傳到下一個物件,直到請求被響應為止。通過這種方式去除物件之間的耦合。
  17. 狀態(State)模式:允許一個物件在其內部狀態發生改變時改變其行為能力。
  18. 觀察者(Observer)模式:多個物件間存在一對多關係,當一個物件發生改變時,把這種改變通知給其他多個物件,從而影響其他物件的行為。
  19. 中介者(Mediator)模式:定義一箇中介物件來簡化原有物件之間的互動關係,降低系統中物件間的耦合度,使原有物件之間不必相互瞭解。
  20. 迭代器(Iterator)模式:提供一種方法來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。
  21. 訪問者(Visitor)模式:在不改變集合元素的前提下,為一個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者物件訪問。
  22. 備忘錄(Memento)模式:在不破壞封裝性的前提下,獲取並儲存一個物件的內部狀態,以便以後恢復它。
  23. 直譯器(Interpreter)模式:提供如何定義語言的文法,以及對語言句子的解釋方法,即直譯器。