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