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

接口
var Bicycle = new Interface('Bicycle', ['assemble', 'wash', 'repair', 'getPrice']);
對象類
var AcmeComfortCuiser = function(){
};
AcmeComfortCuiser.prototype = {
assemble: function(){
},
wash: function(){
},
repair: function(){
},
getPrice: function(){
}
}
裝飾類
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();
}
}
拓展類
var HeadlightDecorator = function(bicycle){
BicycleDecorator.call(this, bicycle);
};
extend(HeadlightDecorator, BicycleDecorator);
HeadlightDecorator.prototype.getPrice = function(){
return this.bicycle.getPrice() + 15.00;
}
相關(guān)文章
Javascript學習筆記之 函數(shù)篇(三) : 閉包和引用
本系列好久沒更新了,今天重新拿過來,繼續(xù)前面未完成的事項,本文我們就來談?wù)凧avascript 中一個最重要的特性--閉包的使用引用。2014-11-11
實例:用 JavaScript 來操作字符串(一些字符串函數(shù))
實例:用 JavaScript 來操作字符串(一些字符串函數(shù))...2007-02-02
JavaScript中用于生成隨機數(shù)的Math.random()方法
這篇文章主要介紹了JavaScript中用于生成隨機數(shù)的Math.random()方法,是JS入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06
javascript學習筆記(六)數(shù)據(jù)類型和JSON格式
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,我們稱之為JavaScript對象表示法。使用JSON進行數(shù)據(jù)傳輸?shù)膬?yōu)勢之一是JSON實際上就是JavaScript。它基于ECMAScript第3版中JavaScript對象字面量語法子集的一種文本格式。2014-10-10
在JavaScript中操作時間之setYear()方法的使用
這篇文章主要介紹了在JavaScript中操作時間之setYear()方法的使用,是JS入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06
bgsound 背景音樂 的一些常用方法及特殊用法小結(jié)
以下的文章是好幾年前收集的,已經(jīng)不記得是從哪里復(fù)制的了;但在這里還是對原創(chuàng)者表示感謝!2010-05-05
JavaScript bold方法入門實例(把指定文字顯示為粗體)
這篇文章主要介紹了JavaScript字符串對象的bold方法入門實例,bold方法用于把指定文字顯示為粗體,需要的朋友可以參考下2014-10-10

