php设计模式——装饰器模式

来源:互联网 发布:叙利亚老虎师 知乎 编辑:程序博客网 时间:2024/06/05 20:17

装饰器模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰器

场景事例:

咖啡 1 元一杯,加点牛奶0.2元,加点糖0.2元,在不修改咖啡类的情况下,使用装饰器模式

<?phpabstract class Beverage{public $_name;abstract public function Cost();}// 被装饰者类class Coffee extends Beverage{public function __construct(){$this->_name = 'Coffee';}public function Cost(){return 1.00;}}// 以下两个类是装饰者相关类class Milk extends Coffee{public $_beverage;public function __construct($beverage){$this->_name = 'Milk';$this->_beverage = $beverage;}public function Cost(){return $this->_beverage->Cost() + 0.2;}}class Sugar extends Coffee{public $_beverage;public function __construct($beverage){$this->_name = 'Sugar';$this->_beverage = $beverage;}public function Cost(){return $this->_beverage->Cost() + 0.2;}}// Test Case//1.拿杯咖啡$coffee = new Coffee();//2.加点牛奶$coffee = new Milk($coffee);  //此时的$coffee已经是milk的对象了//3.加点糖$coffee = new Sugar($coffee); //此时的$coffee是糖的对象printf("Coffee Total:%0.2f\n",$coffee->Cost());


0 0
原创粉丝点击