国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php之裝飾者模式

pf_miles / 1683人閱讀

裝飾者模式概念

動(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ì)象

實(shí)例代碼
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

相關(guān)文章

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

    摘要:概念裝飾模式顧名思義,裝飾模式是一種對(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è)接口接口下面的類和方法用...

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

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

    GitCafe 評(píng)論0 收藏0
  • Decorator Pattern With Laravel 裝飾模式

    摘要:裝飾對(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...

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

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

    CloudwiseAPM 評(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ì)客戶隱藏被代理類的信息裝飾著模式和適配器模式都叫包裝模式關(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í)的...

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

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

0條評(píng)論

pf_miles

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<