zoukankan      html  css  js  c++  java
  • 设计模式-装饰者模式

    <?php
    
    /**
     * 装饰者模式
     * 动态的为对象增加职责
     */
    interface Drink {
    
        public function cost();
    }
    
    class Coffee implements Drink {
    
        public function cost() {
            return 10;
        }
    
    }
    
    abstract class Drink_Decorator implements Drink {
    
        protected $drink;
    
        public function __construct($drink) {
            $this->drink = $drink;
        }
    
    }
    
    class Sugar extends Drink_Decorator {
    
        public function cost() {
            return $this->drink->cost() + 6;
        }
    
    }
    
    class Milk extends Drink_Decorator {
    
        public function cost() {
            return $this->drink->cost() + 7;
        }
    
    }
    
    $coffee = new Coffee();
    
    
    $coffee = new Sugar($coffee);
    
    $coffee = new Milk($coffee);
    
    echo $coffee->cost();

    这个例子,估计看过设计模式的人都太熟悉了

    来个项目案例

    待续

  • 相关阅读:
    四种nlogn排序算法代码
    HDU1421
    HDU1789
    HDU1978
    HDU2059
    HDU2089
    深入理解数组与指针的区别
    存储字节对齐问题
    h5新特性<data*>
    浏览器的标准模式和怪异模式
  • 原文地址:https://www.cnblogs.com/bai-jimmy/p/4320229.html
Copyright © 2011-2022 走看看