zoukankan      html  css  js  c++  java
  • 装饰器模式

    参考 CBF4FILE <<您的设计模式  我们的设计模式>>

    第一副图显示一个最简单的装饰想法:只有一个装饰类,一个原始类。通过对原始类的一次装饰直接输出。

    第二副图显示了一种能够扩展的装饰模式图:原始类只是一个虚拟类,可以派生出多个实际需要装饰的类。并且装饰类也可以是多种多样的。

    <?php
    abstract class Component {
        abstract public function Operation();
    }

    class ConcreteComponent extends Component {
        public function Operation() {
            echo 'primal function<br/>';   
        }
    }

    abstract class Decorator extends Component {
        protected $_component;

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

    class ConcreteDecoratorA extends Decorator {
        protected $_state;

        public function __construct($component, $state) {
            parent::__construct($component);
            $this->_state = $state;
        }

        public function Operation() {
            echo $this->_state.' ';
            $this->_component->Operation();   
        }
    }

    class ConcreteDecoratorB extends Decorator {
        private function AddedBehavior() {
            echo 'function decorate ';   
        }

        public function Operation() {
            $this->AddedBehavior();
            $this->_component->Operation();
        }
    }

    $component = new ConcreteDecoratorA(new ConcreteComponent(), 'attribute decorate');
    $component->Operation();

    $component = new ConcreteDecoratorB(new ConcreteComponent());
    $component->Operation();
    ?>

  • 相关阅读:
    fibonacci封闭公式及矩阵连乘
    fibonacci封闭公式
    fibonacci高精度加法
    fibonacci数列的和取余(1)
    fibonacci数列的和取余(2)
    [html][javascript]父子窗体传值
    [转]父子页面之间跨域通信的方法
    [转]批处理遍历文件夹生成 html 文件
    [原]DataGridView 回车不换行代码 AND 编辑时的字符控制
    [转]身份证从 15 >> 18
  • 原文地址:https://www.cnblogs.com/jesseZh/p/3051090.html
Copyright © 2011-2022 走看看