亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

php之裝飾者模式

pf_miles / 1731人閱讀

裝飾者模式概念

動態(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

相關(guān)文章

  • php 設(shè)計模式 裝飾模式

    摘要:概念裝飾模式顧名思義,裝飾模式是一種對對象數(shù)據(jù)的多次過濾,就像裝飾一樣,一層層的修飾,獲取滿意的結(jié)果。實現(xiàn)裝飾者裝飾操作這是個洗菜操作??偨Y(jié)當(dāng)我們需要對數(shù)據(jù)進(jìn)行過濾的時候,裝飾模式可以成為你的選擇 概念: 裝飾模式: 顧名思義,裝飾模式是一種對對象數(shù)據(jù)的多次過濾,就像裝飾一樣, 一層層的修飾, 獲取滿意的結(jié)果。 裝飾模式共分為兩個部分: 1: 裝飾者: 在這個接口接口下面的類和方法用...

    zhkai 評論0 收藏0
  • PHP設(shè)計模式裝飾模式

    摘要:后盾人人人做后盾定義裝飾對象裝飾器規(guī)范的接口被裝飾者后盾網(wǎng)抽象裝飾器維護(hù)裝飾鏈條的抽象類裝飾器用于裝飾被裝飾者裝飾器

    GitCafe 評論0 收藏0
  • Decorator Pattern With Laravel 裝飾模式

    摘要:裝飾對象包含一個真實對象的引用裝飾對象接受所有來自客戶端的請求。裝飾對象可以在轉(zhuǎn)發(fā)這些請求以前或以后增加一些附加功能。在面向?qū)ο蟮脑O(shè)計中,通常是通過繼承來實現(xiàn)對給定類的功能擴(kuò)展。 Decorator Pattern 裝飾者模式 綱要: 1. 一個初學(xué)者的疑惑 2. 裝飾者模式的特點 3. 簡單case掌握裝飾者模式 4. laravel中裝飾者模式的應(yīng)用 Con...

    roundstones 評論0 收藏0
  • PHP設(shè)計模式裝飾模式

    摘要:概念裝飾器模式允許向一個現(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)有的類的...

    CloudwiseAPM 評論0 收藏0
  • 設(shè)計模式裝飾模式

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

    chuyao 評論0 收藏0

發(fā)表評論

0條評論

pf_miles

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<