装饰模式 :装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 装饰模式是一种 结构型模式 主要角色 : (1)抽象构件(Component)角色:给出一个抽象接口,以规范准备
装饰模式 :装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
装饰模式是一种 结构型模式
主要角色 :
(1)抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。
(2)具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。
(3)装饰(Decorator)角色:持有一个构件(Component)对象的实例,并实现一个与抽象构件接口一致的接口。
(4)具体装饰(Concrete Decorator)角色:负责给构件对象添加上附加的责任。
立即学习“PHP免费学习笔记(深入)”;
uml类图如下所示:
该系统采用多层模式开发,这个网站主要展示女装的经营,更易于网站的扩展和后期的维护,同时也根据常用的SQL注入手段做出相应的防御以提高网站的安全性,本网站实现了购物车,产品订单管理,产品展示,等等,后台实现了动态权限的管理,客户管理,订单管理以及商品管理等等,前台页面设计精致,后台便于操作等。实现了无限子类的添加,实现了动态权限的管理,支持一下一个人做的辛苦

下面是php实现的一个实例:
name.' ';
echo $this->price.'元';
}
}
//生成对象。
$coffee = new coffee();
//$coffee->showprice();
//上面我已经生成了一个对象,现在已经在线上运行
//但是我想动态的为coffee对象添加功能,而不改变原有的类和继承关系,怎么办?
//装饰模式
//装饰角色
class decretor extends drink{
public $drink;
public function __construct(drink $drink){//包装了对象哦
$this->drink = $drink;
}
public function showprice(){//实现对象原有功能,
$this->drink->showprice();
$this->add();//新增功能
}
public function add(){
}
}
//具体装饰角色
class suger extends decretor{
public $price = 1.5;
public $name = '加糖';
public function add(){
echo $this->name.' '.$this->price;
echo ' 一共'.($this->drink->price+$this->price).'元';
}
}
$suger = new suger($coffee);
$suger->showprice();
?>










