目前軟體工程的設計模式主要是23種,可以根據模式的目的和模式的作用範圍進行分類。設計模式的本質是物件導向設計原則的實際運用,是對類的封裝性,繼承性和多型性以及類之間的關聯關係和組合關係的充分理解。
優點結構型模式
行為型模式
作用範圍劃分
物件模式
單例(singleton)模式:某個類只能生成乙個例項,該類提供了乙個全域性訪問點供外部獲取該例項,其拓展是有限多例模式。
原型(prototype)模式:將乙個物件作為原型,通過對其進行複製而轉殖出多個和原型類似的新例項。
工廠方法(factory method)模式:定義乙個用於建立產品的介面,由子類決定生產什麼產品。
建造者(builder)模式:將乙個複雜物件分解成多個相對簡單的部分,然後根據不同需要分別建立它們,最後構建成該複雜物件。
**(proxy)模式:為某物件提供一種**以控制對該物件的訪問。即客戶端通過**間接地訪問該物件,從而限制、增強或修改該物件的一些特性。
介面卡(adapter)模式:將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
橋接(bridge)模式:將抽象與實現分離,使它們可以獨立變化。它是用組合關係代替繼承關係來實現,從而降低了抽象和實現這兩個可變維度的耦合度。
裝飾(decorator)模式:動態的給物件增加一些職責,即增加其額外的功能。
外觀(facade)模式:為多個複雜的子系統提供乙個一致的介面,使這些子系統更加容易被訪問。
享元(flyweight)模式:運用共享技術來有效地支援大量細粒度物件的復用。
組合(composite)模式:將物件組合成樹狀層次結構,使使用者對單個物件和組合物件具有一致的訪問性。
模板方法(templatemethod)模式:定義乙個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。
策略(strategy)模式:定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的改變不會影響使用演算法的客戶。
命令(command)模式:將乙個請求封裝為乙個物件,使發出請求的責任和執行請求的責任分割開。
狀態(state)模式:允許乙個物件在其內部狀態發生改變時改變其行為能力。
觀察者(observer)模式:多個物件間存在一對多關係,當乙個物件發生改變時,把這種改變通知給其他多個物件,從而影響其他物件的行為。
中介者(mediator)模式:定義乙個中介物件來簡化原有物件之間的互動關係,降低系統中物件間的耦合度,使原有物件之間不必相互了解。
迭代器(iterator)模式:提供一種方法來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。
訪問者(visitor)模式:在不改變集合元素的前提下,為乙個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者物件訪問。
備忘錄(memento)模式:在不破壞封裝性的前提下,獲取並儲存乙個物件的內部狀態,以便以後恢復它。
直譯器(interpreter)模式:提供如何定義語言的文法,以及對語言句子的解釋方法,即直譯器。
[1].gof 的 23 種設計模式的分類和功能
[2].軟體設計模式概述
設計模式 0
設計模式包含了物件導向的精髓,懂了設計模式,你就懂了物件導向分析和設計的精要 對類來說的,即乙個類應該只負責一項職責。客戶端不應該依賴它不需要的介面,即乙個類對另乙個類的依賴應該建立在最小的介面上。高層模組不應該依賴低層模組,二者都應該依賴其抽象。低層模組盡量都要有抽象類或介面,或者兩者都有,程式穩...
java設計模式0 設計模式簡介
設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。軟體領域的設計模式起源於建築學。1977年,建築大師alexander出版了 a pattern language towns,bui...
java設計模式系列 0 設計模式概述
1.設計模式簡介 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。2.分類 總體來說設計模式分為三大類 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式...