zoukankan      html  css  js  c++  java
  • Decorator模式

    Decorator(装饰器)模式能够像标准的继承一样为类添加新的功能。

    不同于标准继承机制的是,如果对象进行了实例化,Decorator模式能够在运行时动态地为对象添加新的功能。

    <?php
    abstract class AbstractCar{
        public abstract  function getPrice();
        public abstract function getManufacturer();
    }
    class Car extends AbstractCar{
        private  $price=200000;
        private $manufacturer='bmw';
        public function getPrice(){
            return $this->price;
        }
        public function getManufacturer(){
            return $this->manufacturer;
        }
    }
    
    class CarDecorator extends AbstractCar{
        private $target;
        public function __construct(Car $target){
            $this->target=$target;
        }
        public function getPrice(){
            return $this->target->getPrice();
        }
        public function getManufacturer(){
            return $this->target->getManufacturer();
        }
    }
    
    class NavigationSystem extends CarDecorator{
        public function getPrice(){
            return parent::getPrice()+1000;
        }
    }
    
    $car=new Car();
    $car=new NavigationSystem($car);
    
    echo $car->getPrice();
    
    ?>
  • 相关阅读:
    通过接口实现适用于SqlServer和MySql的SqlHelper
    javascript面向对象(二)
    闭包
    javascript面向对象(一)
    引用类型——function
    引用类型——数组
    引用类型
    javascript变量的作用域
    正则表达式语法
    FCKeditor插件 中文解释
  • 原文地址:https://www.cnblogs.com/HKUI/p/4357969.html
Copyright © 2011-2022 走看看