javaScript裝飾模式

2021-07-12 01:33:58 字數 628 閱讀 9721

裝飾模式,讓work函式本身不做任何修改的同,在其外部包裹乙個額外的函式使其好像具備了新的額外的行為。

優點:1、裝飾模式可以復用

2、裝飾模式可以靈活的組合

例子1

此處給work函式包裹外層函式後使其具有了乙個日誌功能,能記錄並列印呼叫work時傳遞過的引數

function work(a,b)

function makelogging(f)

tempfun.outputlog = function()

function makecache(f);

function temp(arg)

return cache[arg];

}temp.flush = function();

}return temp;

} rand = makecache(rand);

console.log(rand(1));

console.log(rand(1));//相同的結果

rand.flush();

console.log(rand(1));//不同的結果

JavaScript之裝飾者模式

裝飾者模式用於為物件動態增加職責。相較於裝飾者模式而言,繼承導致超類和子類之間的強耦合,超類修改,子類也會隨之改變,同時在功能需求增加時,可能會建立出大量的子類。裝飾者模式則更加靈活,即用即增。對於需求的增加,我們經常做的處理是直接修改某個物件或某個函式,這很不好,違背了開放 封閉原則。以飛機大戰中...

javaScript設計模式之裝飾者模式

裝飾者模式能夠在不改變物件自身的基礎上,在程式執行期間對物件動態的新增職責。與繼承相比,裝飾者是一種更加輕便靈活的做法,這是一種 即用即付 的方式。var plane function plane.prototype.fire function var missiledecorator functi...

JavaScript設計模式之裝飾器模式

為物件新增新功能 不改變其原有的結構和功能。手機殼就是裝飾器,沒有它手機也能正常使用,原有的功能不變,手機殼可以減輕手機滑落的損耗。測試 let circle new circle circle.draw let decorator new decorator cicle decorator.dra...