裝飾者模式概念
動(dòng)態(tài)地將責(zé)任附加到對(duì)象上,若要擴(kuò)展功能,裝飾者提供了比繼承更有彈性的替代方案
裝飾者模式結(jié)構(gòu)圖 裝飾者角色1.被裝飾者基類(Compoent):對(duì)象組件
2.待裝飾對(duì)象(ConcreteComponent):具體組件角色,即將要被裝飾增加功能的類
3.裝飾者基類(Decorator):需要定義一個(gè)與組件接口一致的接口,并持有一個(gè)Component對(duì)象,該對(duì)象其實(shí)就是被裝飾的對(duì)象。
4.具體裝飾者(ConcreteDecorator):現(xiàn)具體要向被裝飾對(duì)象添加的功能。用來(lái)裝飾具體的組件對(duì)象或者另外一個(gè)具體的裝飾器對(duì)象
component = $component; } public function operation() { $this->component->operation(); } } //具體裝飾者類 class ConcreteComponent implements Component{ public function operation(){ return "do operation"; } } //具體裝飾者a class ConcreteDecoratorA extends Decorator{ public function __construct(Component $component) { parent::__construct($component); } public function operation() { parent::operation(); $this->addOperationA(); } public function addOperationA(){ return "add operation a"; } } //具體裝飾者類b class ConcreteDecoratorB extends Decorator{ public function __construct(Component $component) { parent::__construct($component); } public function operation() { parent::operation(); $this->addOperationB(); } public function addOperationB(){ echo "add operation b"; } } $decoratorA = new ConcreteDecoratorA(new ConcreteComponent()); $decoratorA->operation();總結(jié)
1.裝飾者和被裝飾者對(duì)象有相同的超類型
2.你可以用一個(gè)或者多個(gè)裝飾者包裝一個(gè)對(duì)象
3.既然裝飾者和被裝飾者對(duì)象有相同的超類,所以在任何需要原始對(duì)象(被包裝的)的場(chǎng)合,可以用裝飾過(guò)的對(duì)象替換他
4.(關(guān)鍵點(diǎn))裝飾者可以在委托被裝飾者的行為之前/之后,加上自己的行為,已達(dá)到特地的目的
5.對(duì)象可以在任何時(shí)候被裝飾,所以可以在運(yùn)行時(shí)動(dòng)態(tài)的、不限量的用你喜歡的裝飾者來(lái)裝飾對(duì)象
參考文獻(xiàn)《head first 設(shè)計(jì)模式》
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22479.html
摘要:概念裝飾模式顧名思義,裝飾模式是一種對(duì)對(duì)象數(shù)據(jù)的多次過(guò)濾,就像裝飾一樣,一層層的修飾,獲取滿意的結(jié)果。實(shí)現(xiàn)裝飾者裝飾操作這是個(gè)洗菜操作。總結(jié)當(dāng)我們需要對(duì)數(shù)據(jù)進(jìn)行過(guò)濾的時(shí)候,裝飾模式可以成為你的選擇 概念: 裝飾模式: 顧名思義,裝飾模式是一種對(duì)對(duì)象數(shù)據(jù)的多次過(guò)濾,就像裝飾一樣, 一層層的修飾, 獲取滿意的結(jié)果。 裝飾模式共分為兩個(gè)部分: 1: 裝飾者: 在這個(gè)接口接口下面的類和方法用...
摘要:后盾人人人做后盾定義裝飾對(duì)象裝飾器規(guī)范的接口被裝飾者后盾網(wǎng)抽象裝飾器維護(hù)裝飾鏈條的抽象類裝飾器用于裝飾被裝飾者裝飾器
摘要:裝飾對(duì)象包含一個(gè)真實(shí)對(duì)象的引用裝飾對(duì)象接受所有來(lái)自客戶端的請(qǐng)求。裝飾對(duì)象可以在轉(zhuǎn)發(fā)這些請(qǐng)求以前或以后增加一些附加功能。在面向?qū)ο蟮脑O(shè)計(jì)中,通常是通過(guò)繼承來(lái)實(shí)現(xiàn)對(duì)給定類的功能擴(kuò)展。 Decorator Pattern 裝飾者模式 綱要: 1. 一個(gè)初學(xué)者的疑惑 2. 裝飾者模式的特點(diǎn) 3. 簡(jiǎn)單case掌握裝飾者模式 4. laravel中裝飾者模式的應(yīng)用 Con...
摘要:概念裝飾器模式允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝。這種模式創(chuàng)建了一個(gè)裝飾類,用來(lái)包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。 概念 裝飾器模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的...
摘要:相關(guān)設(shè)計(jì)模式裝飾者模式和代理模式裝飾者模式關(guān)注再一個(gè)對(duì)象上動(dòng)態(tài)添加方法代理模式關(guān)注再對(duì)代理對(duì)象的控制訪問(wèn),可以對(duì)客戶隱藏被代理類的信息裝飾著模式和適配器模式都叫包裝模式關(guān)于新職責(zé)適配器也可以在轉(zhuǎn)換時(shí)增加新的職責(zé),但主要目的不在此。 0x01.定義與類型 定義:裝飾模式指的是在不必改變?cè)愇募褪褂美^承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能。它是通過(guò)創(chuàng)建一個(gè)包裝對(duì)象,也就是裝飾來(lái)包裹真實(shí)的...
閱讀 2436·2019-08-30 15:52
閱讀 2237·2019-08-30 12:51
閱讀 2833·2019-08-29 18:41
閱讀 2812·2019-08-29 17:04
閱讀 814·2019-08-29 15:11
閱讀 1720·2019-08-28 18:02
閱讀 3603·2019-08-26 10:22
閱讀 2510·2019-08-26 10:12