js裝飾設(shè)計(jì)模式學(xué)習(xí)心得
裝飾設(shè)計(jì)模式
每種設(shè)都有其獨(dú)特的應(yīng)用場(chǎng)景和解決問(wèn)題的方式, 裝飾設(shè)計(jì)模式是動(dòng)態(tài)的為對(duì)象添加新的功能, 是一種用于代替繼承的技術(shù),無(wú)需通過(guò)繼承增加子類(lèi)就能擴(kuò)展對(duì)象的新功能。使用對(duì)象的關(guān)聯(lián)關(guān)系代替繼承關(guān)系,更加靈活,同時(shí)避免類(lèi)型體系的快速膨脹, 這種模式適合新添加的功能不足以用繼承為代價(jià)解決問(wèn)題的情況時(shí)使用 - 殺雞焉用宰牛刀 ^_^
裝飾設(shè)計(jì)模式: 動(dòng)態(tài)地為一個(gè)對(duì)象添加一些額外的職責(zé),若要擴(kuò)展一個(gè)對(duì)象的功能,裝飾者提供了比繼承更有彈性的替代方案。
結(jié)構(gòu)圖:

接口
var Bicycle = new Interface('Bicycle', ['assemble', 'wash', 'repair', 'getPrice']);
對(duì)象類(lèi)
var AcmeComfortCuiser = function(){
};
AcmeComfortCuiser.prototype = {
assemble: function(){
},
wash: function(){
},
repair: function(){
},
getPrice: function(){
}
}
裝飾類(lèi)
var BicycleDecorator = function(bicycle){
Interface.ensureImplements(bicycle, Bicycle);
this.bicycle = bicycle;
};
BicycleDecorator.prototype = {
assemble: function(){
return this.bicycle.assemble();
},
wash: function(){
return this.bicycle.wash();
},
repair: function(){
return this.bicycle.repair();
},
getPrice: function(){
return this.bicycle.getPrice();
}
}
拓展類(lèi)
var HeadlightDecorator = function(bicycle){
BicycleDecorator.call(this, bicycle);
};
extend(HeadlightDecorator, BicycleDecorator);
HeadlightDecorator.prototype.getPrice = function(){
return this.bicycle.getPrice() + 15.00;
}
- JavaScript實(shí)現(xiàn)AOP詳解(面向切面編程,裝飾者模式)
- node.js實(shí)現(xiàn)的裝飾者模式示例
- JavaScript裝飾器函數(shù)(Decorator)實(shí)例詳解
- 利用策略模式與裝飾模式擴(kuò)展JavaScript表單驗(yàn)證功能
- Javascript設(shè)計(jì)模式之裝飾者模式詳解篇
- 輕松掌握J(rèn)avaScript裝飾者模式
- 學(xué)習(xí)JavaScript設(shè)計(jì)模式之裝飾者模式
- 深入理解JavaScript系列(29):設(shè)計(jì)模式之裝飾者模式詳解
- PHP、Python和Javascript的裝飾器模式對(duì)比
- JavaScript設(shè)計(jì)模式之裝飾者模式介紹
相關(guān)文章
0基礎(chǔ)學(xué)習(xí)前端開(kāi)發(fā)的一些建議
這篇文章主要介紹了0基礎(chǔ)學(xué)習(xí)前端開(kāi)發(fā)的一些建議,文中一些建議非常寶貴,希望能幫助想學(xué)前端的你,感興趣的朋友可以了解下2020-07-07
Javascript學(xué)習(xí)筆記之 函數(shù)篇(三) : 閉包和引用
本系列好久沒(méi)更新了,今天重新拿過(guò)來(lái),繼續(xù)前面未完成的事項(xiàng),本文我們就來(lái)談?wù)凧avascript 中一個(gè)最重要的特性--閉包的使用引用。2014-11-11
實(shí)例:用 JavaScript 來(lái)操作字符串(一些字符串函數(shù))
實(shí)例:用 JavaScript 來(lái)操作字符串(一些字符串函數(shù))...2007-02-02
JavaScript中用于生成隨機(jī)數(shù)的Math.random()方法
這篇文章主要介紹了JavaScript中用于生成隨機(jī)數(shù)的Math.random()方法,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06
javascript學(xué)習(xí)筆記(六)數(shù)據(jù)類(lèi)型和JSON格式
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,我們稱(chēng)之為JavaScript對(duì)象表示法。使用JSON進(jìn)行數(shù)據(jù)傳輸?shù)膬?yōu)勢(shì)之一是JSON實(shí)際上就是JavaScript。它基于ECMAScript第3版中JavaScript對(duì)象字面量語(yǔ)法子集的一種文本格式。2014-10-10
在JavaScript中操作時(shí)間之setYear()方法的使用
這篇文章主要介紹了在JavaScript中操作時(shí)間之setYear()方法的使用,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06
bgsound 背景音樂(lè) 的一些常用方法及特殊用法小結(jié)
以下的文章是好幾年前收集的,已經(jīng)不記得是從哪里復(fù)制的了;但在這里還是對(duì)原創(chuàng)者表示感謝!2010-05-05
JavaScript bold方法入門(mén)實(shí)例(把指定文字顯示為粗體)
這篇文章主要介紹了JavaScript字符串對(duì)象的bold方法入門(mén)實(shí)例,bold方法用于把指定文字顯示為粗體,需要的朋友可以參考下2014-10-10

