js裝飾設(shè)計模式學(xué)習(xí)心得
裝飾設(shè)計模式
每種設(shè)都有其獨特的應(yīng)用場景和解決問題的方式, 裝飾設(shè)計模式是動態(tài)的為對象添加新的功能, 是一種用于代替繼承的技術(shù),無需通過繼承增加子類就能擴(kuò)展對象的新功能。使用對象的關(guān)聯(lián)關(guān)系代替繼承關(guān)系,更加靈活,同時避免類型體系的快速膨脹, 這種模式適合新添加的功能不足以用繼承為代價解決問題的情況時使用 - 殺雞焉用宰牛刀 ^_^
裝飾設(shè)計模式: 動態(tài)地為一個對象添加一些額外的職責(zé),若要擴(kuò)展一個對象的功能,裝飾者提供了比繼承更有彈性的替代方案。
結(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; }
- JavaScript實現(xiàn)AOP詳解(面向切面編程,裝飾者模式)
- node.js實現(xiàn)的裝飾者模式示例
- JavaScript裝飾器函數(shù)(Decorator)實例詳解
- 利用策略模式與裝飾模式擴(kuò)展JavaScript表單驗證功能
- Javascript設(shè)計模式之裝飾者模式詳解篇
- 輕松掌握J(rèn)avaScript裝飾者模式
- 學(xué)習(xí)JavaScript設(shè)計模式之裝飾者模式
- 深入理解JavaScript系列(29):設(shè)計模式之裝飾者模式詳解
- PHP、Python和Javascript的裝飾器模式對比
- JavaScript設(shè)計模式之裝飾者模式介紹
相關(guān)文章
淺談JavaScript中setInterval和setTimeout的使用問題
這篇文章主要介紹了淺談JavaScript中setInterval和setTimeout的使用問題,作者建議在任務(wù)龐大時盡量避免使用setInterval,需要的朋友可以參考下2015-08-08辨析JavaScript中的Undefined類型與null類型
Undefined與null都是js中的基本數(shù)據(jù)類型,然而正如它們的名字那樣,未初始化和空并不相同,下面我們就來詳細(xì)辨析JavaScript中的Undefined類型與null類型:2016-05-05THREE.JS入門教程(4)創(chuàng)建粒子系統(tǒng)
Three.js是一個偉大的開源WebGL庫,WebGL允許JavaScript操作GPU,在瀏覽器端實現(xiàn)真正意義的3D本文將介紹創(chuàng)建一個粒子系統(tǒng)/風(fēng)格/引入物理等等,感興趣的朋友可以了解下哦,希望本文對你有所幫助2013-01-01Knockout數(shù)組(observable)使用詳解示例
本文通過示例詳細(xì)說明了Knockout數(shù)組(observable)的使用方法,如從observableArray里讀取信息、操作observableArray2013-11-11如何獲取JQUERY AJAX返回的JSON結(jié)果集實現(xiàn)代碼
我寫了個方法,用于查詢結(jié)果,但debug過程中發(fā)現(xiàn)結(jié)果集有數(shù)據(jù),我如何通過變量獲取呢2012-12-12