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();

?>

 

转载于:https://www.cnblogs.com/HKUI/p/4357969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值