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加点辣椒;
    ?>
    
  • 相关阅读:
    【转】iOS深入学习(Block全面分析)
    iOS—请求Web Service
    iOS设计模式——MVC
    iOS基础知识
    iOS学习——常用博客
    【转】使用segue页面间传递数据
    【转】storyboard之 prepareForSegue:sender:
    【转】NSDictionary和NSMutableDictionary用法详解
    配置.pch文件
    MKNetworkKit下载图片并显示在UIImageView上
  • 原文地址:https://www.cnblogs.com/taozi32/p/9226546.html
Copyright © 2011-2022 走看看