《laravel 框架關鍵技術解析》學習筆記之裝飾者模式

裝飾者模式
是在開放-關閉原則下實現動態添加或減小功能,提升程序的擴展性.
詳細介紹
注:php

  1. 本文能夠做爲學習"裝飾者模式"的基礎篇,可是我我的更建議配套Decorator Pattern With Laravel 裝飾者模式來學習效果更佳.laravel

  2. 本文中的例子是由《laravel 框架關鍵技術解析》中摘抄的。有興趣的朋友能夠自行購買(這本書不能說寫的多棒,可是做者寫的很用心,laravel關鍵部分源碼講的很細,學習源碼頗有幫助)segmentfault

<?php
interface Decorater{

    public function display();
}


class XiaoFang implements Decorater{

    private $name;

    public function __construct($name){
        $this->name = $name;
    }

    public function display(){
        echo "我是".$this->name."我出門了!!!".'<br/>';
    }
}


class Finery implements Decorater{

    private $component;

    public function __construct(Decorater $component){
            $this->component = $component;
    }

    public function display(){

        $this->component->display();
    }
}


class Shoes extends Finery{

    public function display(){
        echo '穿上鞋子'.'<br/>';
        parent::display();
    }
}

class Skirt extends Finery{

    public function display(){
        echo '穿上裙子'.'<br/>';
        parent::display();
    }
}
class Fire extends Finery{

    public function display(){
        echo '出門前先整理頭髮'.'<br>';
        parent::display();
        echo '出門後再整理一下頭髮'.'<br>';
    }
}

$xiaofang = new XiaoFang('小芳');
$shoes = new Shoes($xiaofang);
$skirt = new Skirt($shoes);

$fire = new Fire($skirt);

$fire->display();

運行下看看結果,理解起來會更佳,執行流程不復雜就不贅述了:框架

出門前先整理頭髮
穿上裙子
穿上鞋子
我是小芳我出門了!!!
出門後再整理一下頭髮學習

相關文章
相關標籤/搜索