PHP设计模式之装饰模式

来源:互联网 发布:淘宝编辑图片软件 编辑:程序博客网 时间:2024/05/20 14:42
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活

这里写图片描述

<?phpabstract class Component{    public abstract function Operation();}class ConcreteComponent extends Component{    function Operation()    {        echo '具体对象的操作<br />';    }}class Decorator extends Component{    protected $component;    public function SetComponent(Component $component)    {        $this->component = $component;    }    public function Operation()    {        if ($this->component != null){            $this->component->Operation();        }    }}class ConcreteDecoratorA extends Decorator{    private $addedState;    function Operation()    {        parent::Operation();        $this->addedState = 'New State';        echo '具体装饰对象A的操作';    }}class ConcreteDecoratorB extends Decorator{    private $addedState;    function Operation()    {        parent::Operation();        $this->addedBehavior();        echo '具体装饰对象B的操作';    }    private  function addedBehavior()    {    }}$c = new ConcreteComponent();$d1 = new ConcreteDecoratorA();$d2 = new ConcreteDecoratorB();$d1->SetComponent($c);$d2->SetComponent($d1);$d1->Operation();echo '<br />';echo '<br />';$d2->Operation();
  • 因为装饰模式对象作为子对象的包装,所以保持基类中的方法尽可能少是很重要的。如果一个基类具有大量特性,那么装饰对象不得不为他们包装的对象的所有public方法加上委托。
原创粉丝点击