W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在眾所周知的設(shè)計書《Domain-Driven Terms》中,它被描述為:
“設(shè)計模式是命名、抽象和識別對可重用的面向?qū)ο笤O(shè)計有用的的通用設(shè)計結(jié)構(gòu)。設(shè)計模式確定類和他們的實(shí)體、他們的角色和協(xié)作、還有他們的責(zé)任分配。
每一個設(shè)計模式都聚焦于一個面向?qū)ο蟮脑O(shè)計難題或問題。它描述了在其它設(shè)計的約束下它能否使用,使用它后的后果和得失。因為我們必須最終實(shí)現(xiàn)我們的設(shè)計模式,所以每個設(shè)計模式都提供了例子..代碼來對實(shí)現(xiàn)進(jìn)行闡釋。
雖然設(shè)計模式被描述為面向?qū)ο蟮脑O(shè)計,它們基于那些已經(jīng)被主流面向?qū)ο笳Z言實(shí)現(xiàn)過的解決方案...”
設(shè)計模式可以被分成幾個不同的種類。在這個部分我們將復(fù)習(xí)三個分類,并且在我們進(jìn)入特定的設(shè)計模式詳情之前我們提到該分組下的模式的幾個示例。
創(chuàng)建型設(shè)計模式關(guān)注于對象創(chuàng)建的機(jī)制方法,通過該方法,對象以適應(yīng)工作環(huán)境的方式被創(chuàng)建。基本的對象創(chuàng)建方法可能會給項目增加額外的復(fù)雜性,而這些模式的目的就是為了通過控制創(chuàng)建過程解決這個問題。
屬于這一類的一些模式是:構(gòu)造器模式(Constructor),工廠模式(Factory),抽象工廠模式 (Abstract),原型模式 (Prototype),單例模式 (Singleton)以及 建造者模式(Builder)。
結(jié)構(gòu)模式關(guān)注于對象組成和通常識別的方式實(shí)現(xiàn)不同對象之間的關(guān)系。該模式有助于在系統(tǒng)的某一部分發(fā)生改變的時候,整個系統(tǒng)結(jié)構(gòu)不需要改變。該模式同樣有助于對系統(tǒng)中某部分沒有達(dá)到某一目的的部分進(jìn)行重組。
在該分類下的模式有:裝飾模式,外觀模式,享元模式,適配器模式和代理模式。
行為模式關(guān)注改善或精簡在系統(tǒng)中不同對象間通信。
行為模式包括:迭代模式,中介者模式,觀察者模式和訪問者模式。
在我早起學(xué)習(xí)設(shè)計模式的經(jīng)驗中,我個人發(fā)現(xiàn),下面的表格是一個非常有用的提醒,大多數(shù)模式所提供-它覆蓋了由GOF提出的23種模式。最早的表格由 Elyse Nielsen 在2004年匯總,我已經(jīng)做了部分修改以適應(yīng)我們的討論。 我推薦使用該表格作為參考,但要記住大量額外的模式在這里么有提及,但在本書的后續(xù)的章節(jié)中會提到。
要記住這張表中會有模式引用“類”的概念。JavaScript是一種弱類型語言,不過類可以通過函數(shù)模擬出來。 最常見的實(shí)現(xiàn)這一點(diǎn)的方法,是先定義一個JavaScript函數(shù),然后再使用這個新的關(guān)鍵字創(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ù)實(shí)例化對象,就像這樣:
var myCar = new Car("ford");
myCar.year = "2010";
console.log( myCar.getInfo() );
更多使用JavaScript定義“類”的方法,參見Stoyan Stefanov的關(guān)于這些的有用帖子。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: