成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

裝飾者模式

Godtoy / 3059人閱讀

摘要:所以裝飾者模式的一個(gè)基本的原則就是在不改變對(duì)象自身的基礎(chǔ)上,在程序運(yùn)行期間給對(duì)象動(dòng)態(tài)的添加職責(zé),能夠使得功能變得可插拔更加的靈活。

標(biāo)簽: 設(shè)計(jì)模式

什么是裝飾者模式?

裝飾者模式,其中的重點(diǎn)自然就在“裝飾”這兩個(gè)字上面,在日常生活中很多東西都是需要裝飾的,裝飾的目的是為了原來(lái)的物品更加的好看,或者是加個(gè)裝飾讓物品更加實(shí)用,裝飾一般都能夠?yàn)樵瓉?lái)的物品添加一些新的功能,而添加的裝飾在添加新的功能的時(shí)候也不會(huì)改變?cè)瓉?lái)的物品。

那么在編程中的裝飾其實(shí)和生活之中的裝飾也是一個(gè)道理。所以裝飾者模式的一個(gè)基本的原則就是在不改變對(duì)象自身的基礎(chǔ)上,在程序運(yùn)行期間給對(duì)象動(dòng)態(tài)的添加職責(zé),能夠使得功能變得可插拔更加的靈活。

模擬傳統(tǒng)面向?qū)ο笳Z(yǔ)言的裝飾者模式

下面通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)體會(huì)一下裝飾者模式:

假設(shè)現(xiàn)在我們?cè)诰帉?xiě)一個(gè)飛機(jī)大戰(zhàn)的游戲,隨著等級(jí)的上升我們的飛機(jī)功能不斷的增強(qiáng),一開(kāi)始只能發(fā)射子彈,二級(jí)之后可以發(fā)射導(dǎo)彈了,三級(jí)之后可以發(fā)送原子彈了。

首先實(shí)現(xiàn)一個(gè)飛機(jī)類(lèi):

var Plane = function () {}
Plane.prototype.fire = function () {
    console.log("發(fā)射普通子彈")
}

接下來(lái)添加兩個(gè)裝飾類(lèi),分別實(shí)現(xiàn)發(fā)射原子彈和導(dǎo)彈:

var MissileDecorator = function (plane) {
    this.plane = plane
}
MissileDecorator.prototype.fire = function () {
    this.plane.fire()
    console.log("發(fā)射導(dǎo)彈")
}
var AtomDecorator = function (plane) {
    this.plane = plane
}
AtomDecorator.prototype.fire = function () {
    this.plane.fire()
    console.log("發(fā)射原子彈")
}

導(dǎo)彈類(lèi)和原子彈類(lèi)的構(gòu)造函數(shù)都接受參數(shù)plane對(duì)象,并且保留這個(gè)參數(shù),在執(zhí)行他們自身的操作之外還執(zhí)行plane的fire方法。

這樣子每被裝飾一次之后原來(lái)的類(lèi)就新增了一個(gè)功能,而且原始的類(lèi)也沒(méi)有被改變。

使用:

var plane = new Plane();
plane = new MissileDecorator( plane );
plane = new AtomDecorator( plane );
plane.fire();
// 分別輸出: 發(fā)射普通子彈、發(fā)射導(dǎo)彈、發(fā)射原子彈
裝飾者也是包裝容器

從上面的例子可以看到,每經(jīng)過(guò)一次裝飾就相當(dāng)于在原來(lái)的類(lèi)外部包裝了一層對(duì)象,形成了一條包裝鏈,請(qǐng)求隨著這條包裝鏈依次傳遞到所有的對(duì)象,每個(gè)對(duì)象都會(huì)有機(jī)會(huì)來(lái)處理這個(gè)請(qǐng)求。

作者簡(jiǎn)介:李成文,蘆葦科技web前端開(kāi)發(fā)工程師,擅長(zhǎng)網(wǎng)站建設(shè)、公眾號(hào)開(kāi)發(fā)、微信小程序開(kāi)發(fā)、小游戲、公眾號(hào)開(kāi)發(fā),專(zhuān)注于前端領(lǐng)域框架、交互設(shè)計(jì)、圖像繪制、數(shù)據(jù)分析等研究,訪問(wèn) www.talkmoney.cn 了解更多。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100292.html

相關(guān)文章

  • Java 設(shè)計(jì)模式裝飾模式

    摘要:裝飾者模式組成結(jié)構(gòu)抽象構(gòu)件給出抽象接口或抽象類(lèi),以規(guī)范準(zhǔn)備接收附加功能的對(duì)象。裝飾者模式圖解裝飾者模式應(yīng)用場(chǎng)景需要擴(kuò)展一個(gè)類(lèi)的功能,或給一個(gè)類(lèi)添加附加職責(zé)。裝飾者對(duì)象接受所有來(lái)自客戶(hù)端的請(qǐng)求。參考資料設(shè)計(jì)模式 一、了解裝飾者模式 1.1 什么是裝飾者模式 裝飾者模式指的是在不必改變?cè)?lèi)文件和使用繼承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能。它是通過(guò)創(chuàng)建一個(gè)包裝對(duì)象,也就是裝飾者來(lái)包裹真實(shí)的對(duì)...

    kumfo 評(píng)論0 收藏0
  • 設(shè)計(jì)模式裝飾模式

    摘要:相關(guān)設(shè)計(jì)模式裝飾者模式和代理模式裝飾者模式關(guān)注再一個(gè)對(duì)象上動(dòng)態(tài)添加方法代理模式關(guān)注再對(duì)代理對(duì)象的控制訪問(wèn),可以對(duì)客戶(hù)隱藏被代理類(lèi)的信息裝飾著模式和適配器模式都叫包裝模式關(guān)于新職責(zé)適配器也可以在轉(zhuǎn)換時(shí)增加新的職責(zé),但主要目的不在此。 0x01.定義與類(lèi)型 定義:裝飾模式指的是在不必改變?cè)?lèi)文件和使用繼承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能。它是通過(guò)創(chuàng)建一個(gè)包裝對(duì)象,也就是裝飾來(lái)包裹真實(shí)的...

    chuyao 評(píng)論0 收藏0
  • 設(shè)計(jì)模式——裝飾模式

    摘要:裝飾者模式遵循了開(kāi)閉原則,對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。但是在使用裝飾者模式的同時(shí)可能會(huì)引入大量小類(lèi),而且使用裝飾者模式除了實(shí)例化組件外,還要把組件包裝進(jìn)裝飾者,會(huì)使代碼顯得不易理解。 1. 簡(jiǎn)介 ??裝飾者模式是一種結(jié)構(gòu)型模式,它可以動(dòng)態(tài)的將責(zé)任附加到對(duì)象上,在擴(kuò)展功能方面,它比繼承更有彈性。裝飾者模式遵循了開(kāi)閉原則,對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。??雖然在裝飾者模式中也使用了繼承,但是繼承只是...

    hoohack 評(píng)論0 收藏0
  • 代理模式裝飾模式

    摘要:簡(jiǎn)介代理模式和裝飾者模式是兩種常見(jiàn)的設(shè)計(jì)模式。這里通過(guò)構(gòu)造函數(shù)的參數(shù)將被代理對(duì)象傳入到代理中,也可以通過(guò)其它方式,如提供一個(gè)方法。下面是的代碼輸出首先依然是先創(chuàng)建一個(gè)需要被代理的對(duì)象,然后把它傳入到的構(gòu)造函數(shù)中。 簡(jiǎn)介 代理模式和裝飾者模式是兩種常見(jiàn)的設(shè)計(jì)模式。代理模式是為其它對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以...

    NusterCache 評(píng)論0 收藏0
  • 美顏相機(jī)中的設(shè)計(jì)模式 —— 裝飾模式

    摘要:這是設(shè)計(jì)模式系列的第二篇,系列文章目錄如下用一句話(huà)總結(jié)那些殊途同歸的設(shè)計(jì)模式工廠策略模版方法美顏相機(jī)中的設(shè)計(jì)模式裝飾者模式幾乎所有的設(shè)計(jì)模式都是通過(guò)增加一層抽象來(lái)解決問(wèn)題。 這是設(shè)計(jì)模式系列的第二篇,系列文章目錄如下: 用一句話(huà)總結(jié)那些殊途同歸的設(shè)計(jì)模式:工廠=?策略=?模版方法 美顏相機(jī)中的設(shè)計(jì)模式——裝飾者模式 幾乎所有的設(shè)計(jì)模式都是通過(guò)增加一層抽象來(lái)解決問(wèn)題。 上一篇中提...

    anonymoussf 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式----裝飾模式

    摘要:聲明這個(gè)系列為閱讀設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐曾探著一書(shū)的讀書(shū)筆記裝飾者模式的定義裝飾者模式能夠在不改變對(duì)象自身的基礎(chǔ)上,在程序運(yùn)行期間給對(duì)像動(dòng)態(tài)的添加職責(zé)。與繼承相比,裝飾者是一種更輕便靈活的做法。裝飾者模式的作用就是為對(duì)象動(dòng)態(tài)的加入某些行為。 聲明:這個(gè)系列為閱讀《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》 ----曾探@著一書(shū)的讀書(shū)筆記 裝飾者模式的定義: 裝飾者(decorator)模式能...

    rose 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<