裝飾者模式:
是在開放-關閉原則下實現動態添加或減小功能,提升程序的擴展性.
詳細介紹
注:php
本文能夠做爲學習"裝飾者模式"的基礎篇,可是我我的更建議配套Decorator Pattern With Laravel 裝飾者模式來學習效果更佳.laravel
本文中的例子是由《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();
運行下看看結果,理解起來會更佳,執行流程不復雜就不贅述了:框架
出門前先整理頭髮
穿上裙子
穿上鞋子
我是小芳我出門了!!!
出門後再整理一下頭髮學習