裝飾模式,讓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...