在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 設計模式的分類
中介者模式
MVVM
亨元模式
設計模式分類概覽表
ES Harmony
組合模式
CommonJS
jQuery 插件的設計模式
外觀模式
觀察者模式
建造者模式
構(gòu)造器模式
外觀模式
簡介
AMD
原型模式
設計模式的分類
觀察者模式
命名空間模式
代理模式
編寫設計模式
適配器模式
反模式
什么是設計模式
模塊化模式
MVC
Mixin 模式
裝飾模式
設計模式的結(jié)構(gòu)
單例模式
迭代器模式
命令模式
工廠模式
MVP
暴露模塊模式
惰性初始模式

設計模式的分類

設計模式的種類

在眾所周知的設計書《Domain-Driven Terms》中,它被描述為:

“設計模式是命名、抽象和識別對可重用的面向?qū)ο笤O計有用的的通用設計結(jié)構(gòu)。設計模式確定類和他們的實體、他們的角色和協(xié)作、還有他們的責任分配。

每一個設計模式都聚焦于一個面向?qū)ο蟮脑O計難題或問題。它描述了在其它設計的約束下它能否使用,使用它后的后果和得失。因為我們必須最終實現(xiàn)我們的設計模式,所以每個設計模式都提供了例子..代碼來對實現(xiàn)進行闡釋。

雖然設計模式被描述為面向?qū)ο蟮脑O計,它們基于那些已經(jīng)被主流面向?qū)ο笳Z言實現(xiàn)過的解決方案...”

設計模式可以被分成幾個不同的種類。在這個部分我們將復習三個分類,并且在我們進入特定的設計模式詳情之前我們提到該分組下的模式的幾個示例。

創(chuàng)建型設計模式

創(chuàng)建型設計模式關注于對象創(chuàng)建的機制方法,通過該方法,對象以適應工作環(huán)境的方式被創(chuàng)建?;镜膶ο髣?chuàng)建方法可能會給項目增加額外的復雜性,而這些模式的目的就是為了通過控制創(chuàng)建過程解決這個問題。

屬于這一類的一些模式是:構(gòu)造器模式(Constructor),工廠模式(Factory),抽象工廠模式 (Abstract),原型模式 (Prototype),單例模式 (Singleton)以及 建造者模式(Builder)。

結(jié)構(gòu)設計模式

結(jié)構(gòu)模式關注于對象組成和通常識別的方式實現(xiàn)不同對象之間的關系。該模式有助于在系統(tǒng)的某一部分發(fā)生改變的時候,整個系統(tǒng)結(jié)構(gòu)不需要改變。該模式同樣有助于對系統(tǒng)中某部分沒有達到某一目的的部分進行重組。

在該分類下的模式有:裝飾模式,外觀模式,享元模式,適配器模式和代理模式。

行為設計模式

行為模式關注改善或精簡在系統(tǒng)中不同對象間通信。

行為模式包括:迭代模式,中介者模式,觀察者模式和訪問者模式。

設計模式的分類

在我早起學習設計模式的經(jīng)驗中,我個人發(fā)現(xiàn),下面的表格是一個非常有用的提醒,大多數(shù)模式所提供-它覆蓋了由GOF提出的23種模式。最早的表格由 Elyse Nielsen 在2004年匯總,我已經(jīng)做了部分修改以適應我們的討論。 我推薦使用該表格作為參考,但要記住大量額外的模式在這里么有提及,但在本書的后續(xù)的章節(jié)中會提到。

關于類的簡單說明

要記住這張表中會有模式引用“類”的概念。JavaScript是一種弱類型語言,不過類可以通過函數(shù)模擬出來。 最常見的實現(xiàn)這一點的方法,是先定義一個JavaScript函數(shù),然后再使用這個新的關鍵字創(chuàng)建一個對象??梢酝ㄟ^這種方法像下面這樣給類定義新的屬性與方法。

// A car "class"
function Car( model ) {

  this.model = model;
  this.color = "silver";
  this.year  = "2012";

  this.getInfo = function () {
    return this.model + " " + this.year;
  };

}

接著我們可以使用上面定義的Car構(gòu)造函數(shù)實例化對象,就像這樣:

var myCar = new Car("ford");

myCar.year = "2010";

console.log( myCar.getInfo() );

更多使用JavaScript定義“類”的方法,參見Stoyan Stefanov的關于這些的有用帖子。

上一篇:適配器模式下一篇:外觀模式