zoukankan      html  css  js  c++  java
  • PHP设计模式

    装饰器模式允许我们根据运行时不同的情景动态地为某个对象调用前后添加不同的行

    <?php
    interface Component {
        public function operation();
    }
    
    abstract class Decorator implements Component{ // 装饰角色 
        protected  $_component;
        public function __construct(Component $component) {
            $this->_component = $component;
        }
        public function operation() {
            $this->_component->operation();
        }
    }
    
    class ConcreteDecoratorA extends Decorator { // 具体装饰类A
        public function __construct(Component $component) {
            parent::__construct($component);
        } 
        public function operation() {
            parent::operation();    //  调用装饰类的操作
            $this->addedOperationA();   //  新增加的操作
        }
        public function addedOperationA() {echo 'A加点酱油;';}
    }
    
    class ConcreteDecoratorB extends Decorator { // 具体装饰类B
        public function __construct(Component $component) {
            parent::__construct($component);
        } 
        public function operation() {
            parent::operation();
            $this->addedOperationB();
        }
        public function addedOperationB() {echo "B加点辣椒;";}
    }
    
    class ConcreteComponent implements Component{ //具体组件类
        public function operation() {} 
    }
    
    // clients
    $component = new ConcreteComponent();
    $decoratorA = new ConcreteDecoratorA($component);
    $decoratorB = new ConcreteDecoratorB($decoratorA);
    
    $decoratorA->operation();//输出:A加点酱油;
    echo '<br>--------<br>';
    $decoratorB->operation();//输出:A加点酱油;B加点辣椒;
    ?>
    
  • 相关阅读:
    dirs命令
    pwd命令
    ls命令
    rmdir命令
    install命令和cp命令的区别
    ./configure,make,make install的作用
    install 命令
    Make 命令
    linux configure使用方法
    Linux下which、whereis、locate、find命令的区别
  • 原文地址:https://www.cnblogs.com/taozi32/p/9226546.html
Copyright © 2011-2022 走看看