軟件設計模式

  軟件設計模式(Design pattern),又稱設計模式,是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。算法

  設計模式(英語 design pattern)是對面向對象設計中反覆出現的問題的解決方案。這個術語是在1990年代由Erich Gamma等人從建築設計領域引入到計算機科學中來的。這個術語的含義還存有爭議。算法不是設計模式,由於算法致力於解決問題而非設計問題。設計模式一般描述了一組相互緊密做用的類與對象。設計模式提供一種討論軟件設計的公共語言,使得熟練設計者的設計經驗能夠被初學者和其餘設計者掌握。設計模式還爲軟件重構提供了目標。設計模式

  隨着軟件開發社羣對設計模式的興趣日益增加,已經出版了一些相關的專著,按期召開相應的研討會,並且Ward Cunningham爲此發明了WikiWiki用來交流設計模式的經驗。併發

  模式格式ui

    儘管名稱和順序在不一樣的資料中各有不一樣,描述模式的格式大體分爲如下四個主要部分:設計

    模式名稱(Pattern Name):每個模式都有本身的名字,模式的名字使得咱們能夠討論咱們的設計。代理

    問題(Problem):在面向對象的系統設計過程當中反覆出現的特定場合,它致使咱們採用某個模式。日誌

    解決方案(Solution):上述問題的解決方案,其內容給出了設計的各個組成部分,它們之間的關係、職責劃分和協做方式。server

    效果(Consequence):採用該模式對軟件系統其餘部分的影響,好比對系統的擴充性、可移植性的影響。影響也包括負面的影響。對象

    別名(Also Known As):一個模式能夠有超過一個以上的名稱。這些名稱應該要在這一節註明。接口

    動機(Motivation):該模式應該利用在哪一種狀況下是本節提供的方案(包括問題與前因後果)的責任。

    應用(Applicability)

    結構(Structure):這部分經常使用類圖與互動圖闡述此模式。

    參與者(Participants):這部分提供一份本模式用到的類與物件清單,與它們在設計下扮演的角色。

    合做(Collaboration):描述在此模式下,類與物件間的互動。

    結果(Consequences):這部分應描述使用本模式後的結果、反作用、與交換(trade-off)

    實現(Implementaion):這部分應描述實現該模式、該模式的部分方案、實現該模式的可能技術、或者建議實現模式的方法。

    例程(Sample Code):示範程式。

    已知應用(Known Uses):業界已知的實作範例。

    相關模式(Related Patterns):這部分包括其餘相關模式,以及與其餘相似模式的不一樣。

  模式列表

  • 基礎模式
  • 委託模式
  • 接口模式
  • 代理模式

  

建立模式

抽象工廠模式(Abstract Factory) ,提供一個建立一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
生成器模式 (Builder),將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。
工廠方法模式(Factory Method) ,定義一個用於建立對象的接口,讓子類決定將哪個類實例化。Factory Method使一個類的實例化延遲到其子類。
原型模式 (Prototype) ,用原型實例指定建立對象的種類,而且經過拷貝這個原型來建立新的對象。
單例模式(Singleton),保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

結構模式

適配器模式 (Adapter) ,將一個類的接口轉換成客戶但願的另一個接口。Adapter模式使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。
橋接模式(Bridge) ,將抽象部分與它的實現部分分離,使它們均可以獨立地變化。
組合模式(Composite) ,將對象組合成樹形結構以表示「部分-總體」的層次結構。它使得客戶對單個對象和複合對象的使用具備一致性。
容器模式
修飾模式 (Decorator) ,動態地給一個對象添加一些額外的職責。就擴展功能而言, 它比生成子類方式更爲靈活。
擴展性模式
享元模式
管道與過濾器模式
代理模式(Proxy) ,爲其餘對象提供一個代理以控制對這個對象的訪問。

行爲模式

責任鏈模式 (Chain of Responsibility) ,爲解除請求的發送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它。
命令模式 (Command) ,將一個請求封裝爲一個對象,從而使你可用不一樣的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操做。
柯里化模式
事件監聽器模式
解釋器模式
迭代器模式
中介者模式
備忘錄模式 (Memento) ,在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象以外保存這個狀態。這樣之後就可將該對象恢復到保存的狀態。
觀察者模式(Observer) ,定義對象間的一種一對多的依賴關係,以便當一個對象的狀態發生改變時,全部依賴於它的對象都獲得通知並自動刷新。
狀態模式 (State) ,容許一個對象在其內部狀態改變時改變它的行爲。對象看起來彷佛修改了它所屬的類。
策略模式 (Strategy) ,定義一系列的算法,把它們一個個封裝起來, 而且使它們可相互替換。本模式使得算法的變化可獨立於使用它的客戶。
模板方法模式
訪問者模式 (Visitor),表示一個做用於某對象結構中的各元素的操做。它使你能夠在不改變各元素的類的前提下定義做用於這些元素的新操做。
層次訪問者模式

併發模式

模式 Action at a distance
模式 Balking
模式 Guarded suspension
模式 Scheduler
模式 Read write lock
模式 Double checked locking
模式 Disable job requests while running job

實時模式

模式 Scheduled task
模式 User interface
模式 Disable job requests while running job

其餘

模型—視圖—控制器模式
相關文章
相關標籤/搜索