如何使用javascript中的裝飾模式

這篇文章主要講解了如何使用javascript中的裝飾模式,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、秭歸網(wǎng)絡(luò)推廣、小程序制作、秭歸網(wǎng)絡(luò)營銷、秭歸企業(yè)策劃、秭歸品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供秭歸建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn

介紹:裝飾模式可以在不改變一個對象本身功能的基礎(chǔ)上給對象增加額外的新行為。在現(xiàn)實生活中,這種情況也到處存在,例如一張照片,可以不改變照片本身,通過增加一個相框,使其具有防潮的功能。裝飾模式是一種用于替代繼承的技術(shù),它使用對象之間的關(guān)聯(lián)關(guān)系來取代繼承關(guān)系。

定義:動態(tài)的給一個對象增加一些額外的職責(zé),就增加對象功能來說,裝飾模式比生成子類實現(xiàn)更為靈活。裝飾模式是一種對象結(jié)構(gòu)模型。

場景:我們現(xiàn)有一個Circle類用來畫一個圓,新的需求要求畫一個紅色的圓,又一個新的需求要求我們畫一個半徑20的圓,又一個新的需求要求我們畫一個紅色的,半徑20的圓。
如何設(shè)計才能讓我們的代碼來兼容這樣的需求呢?我們首先給Circle類包裝一個顏色的相框,這個相框用來改變圓的顏色。再給Circle類包裝一個大小的相框,這個相框用來改變圓的大小。通過不同的相框組合來達到想要的效果。

示例:

var Circle = function(){
  this.draw = function(){
    console.log('畫圓');
  };
}
 
var ColorDecorator = function(circle){
  this.circle = circle;
  this.draw = function(){
    this.circle.draw();
    setColor();
    return this.circle;
  }
  function setColor(){
    console.log('紅色');
  }
}
 
var RadiusDecorator = function(circle){
  this.circle = circle;
  this.draw = function(){
    this.circle.draw();
    setRadius();
  }
  function setRadius(){
    console.log('半徑:20px')
  }
}
 
var circle = new Circle();
 
var redCricle = new ColorDecorator(circle);
 
var radiusCricle = new RadiusDecorator(circle);
 
var radiusRedCircle = new RadiusDecorator(new ColorDecorator(circle));
 
//輸出:
circle.draw();  //畫圓
 
redCricle.draw(); //畫圓 紅色
 
radiusCricle.draw(); //畫圓 半徑:20px
 
radiusRedCircle.draw(); //畫圓 紅色 半徑:20px

以上就是裝飾模式的示例,比較好懂,在不改變Circle類基礎(chǔ)上進行擴展,通過包裝一層來實現(xiàn)新特性。降低了系統(tǒng)的耦合度。與繼承結(jié)構(gòu)相比,裝飾模式大大減少了子類的個數(shù),讓系統(tǒng)擴展起來更加方便,而且更容易維護。RadiusDecorator,ColorDecorator稱為裝飾類,他們的引入將大大簡化系統(tǒng)的設(shè)計,他也是裝飾模式的核心。

裝飾模式總結(jié):

優(yōu)點:
* 便于擴展一個對象的功能,裝飾模式比繼承更加具有靈活性,不會導(dǎo)致類的個數(shù)急劇增加。
* 可以通過一種動態(tài)的方式來擴展一個對象的功能。
* 可以對一個對象進行多次裝飾,通過不同的裝飾類組合,可以創(chuàng)造很多不同行為的組合,得到功能更強大的對象

缺點:
* 使用裝飾模式過程中會產(chǎn)生很多小對象,一定程度影響程序性能。
* 裝飾模式特別靈活,同時也意味著更加容易出錯,排除復(fù)雜度也不低。

適用場景:
* 不影響對象的基礎(chǔ)下進行擴展,添加職責(zé)

看完上述內(nèi)容,是不是對如何使用javascript中的裝飾模式有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標題:如何使用javascript中的裝飾模式
瀏覽地址:http://muchs.cn/article8/gephip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、電子商務(wù)網(wǎng)站設(shè)計Google、定制開發(fā)、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作