数码资讯
学习PHP设计模式PHP实现装饰模式(装饰)
添加一些额外的职责,动态地给一个对象。就功能而言,Decorator模式比生成子类更灵活} { gof95 装饰模式是以一种透明的方式向客户动态地将更多的责任添加到一个对象中,也就是说,客户不觉得装饰前后的区别,装饰图案可以扩展对象的功能而不需要创建更多的子类。 一、装饰图案结构图 二、装饰图案的主
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
添加一些额外的职责,动态地给一个对象。就功能而言,Decorator模式比生成子类更灵活} { gof95
装饰模式是以一种透明的方式向客户动态地将更多的责任添加到一个对象中,也就是说,客户不觉得装饰前后的区别,装饰图案可以扩展对象的功能而不需要创建更多的子类。
一、装饰图案结构图
二、装饰图案的主要作用
抽象组件(组件)角色:定义一个对象接口,以标准化准备接受额外职责的对象,以便动态地向这些对象添加职责。
特定组件(具体组件)角色:定义一个将承担额外责任的类。
装饰器角色:持有指向组件对象的指针并定义一个与组件接口一致的接口。
具体的装饰器角色:它负责向组件对象添加额外的责任。
三。装饰图案的利与弊
装饰图案的优点:
1,比静态继承更灵活;
2。在层次结构中避免太多的特性。
装饰图案的缺点:
1,装饰图案的使用会产生比使用继承物更多的东西,而且这些物体看起来很虚构,因此很难检查。
四。装饰图案的应用场景
1,在不影响其他对象的情况下,以动态透明的方式向单个对象添加职责。
2,处理可动态添加到对象中的可撤销的职责,这些功能可以动态撤消。
三.当非彩色的生成子类的方法推广。一种情况是,可能有大量独立的扩展,将产生大量的子类来支持每一个组合,使得子类爆炸性增长的数量。另一种情况可能是,类的定义是隐藏的,或类的定义不能用生成子类。
五。php装饰模式的一个例子
< PHP
*抽象组件角色
* /
界面组件{
*样品的方法
* /
公共职能运作();
}
*装饰的作用
* /
抽象类装饰器实现组件{
保护_component美元;
公共功能__construct(组件$组件){
美元-> _component = $组成;
}
公共函数操作(){
这_component美元-> ->运行();
}
}
*具体装修甲级
* /
类concretedecoratora延伸装饰{
公共功能__construct(组件$组件){
家长::__construct(元部件);
}
公共函数操作(){
父::(操作);调用装饰操作。
(美元-> addedoperationa); / /新业务
}
*新增加的操作A,即装饰的功能。
* /
公共功能addedoperationa(){
echo'add操作;
}
}
*特殊装饰B级
* /
类concretedecoratorb延伸装饰{
公共功能__construct(组件$组件){
家长::__construct(元部件);
}
公共函数操作(){
父::操作();
美元-> addedoperationb();
}
*新增加的操作B,即装饰的功能。
* /
公共功能addedoperationb(){
echo'add操作B;
}
}
*具体成分
* /
类的混凝土构件实现了组件{
公共函数操作(){
echo'concrete组件操作;
}
}
*客户端
* /
客户端类{
*主程序。
* /
公共静态函数main(){
美元=新的混凝土构件(组件);
decoratora美元=新concretedecoratora(元部件);
decoratorb =新concretedecoratorb美元(美元decoratora);
decoratora美元->运行();
decoratorb美元->运行();
}
}
客户::主();
>
以上是利用php来实现装饰图案的代码,和一些装饰图案的概念区别,希望对你有所帮助。
装饰模式是以一种透明的方式向客户动态地将更多的责任添加到一个对象中,也就是说,客户不觉得装饰前后的区别,装饰图案可以扩展对象的功能而不需要创建更多的子类。
一、装饰图案结构图
二、装饰图案的主要作用
抽象组件(组件)角色:定义一个对象接口,以标准化准备接受额外职责的对象,以便动态地向这些对象添加职责。
特定组件(具体组件)角色:定义一个将承担额外责任的类。
装饰器角色:持有指向组件对象的指针并定义一个与组件接口一致的接口。
具体的装饰器角色:它负责向组件对象添加额外的责任。
三。装饰图案的利与弊
装饰图案的优点:
1,比静态继承更灵活;
2。在层次结构中避免太多的特性。
装饰图案的缺点:
1,装饰图案的使用会产生比使用继承物更多的东西,而且这些物体看起来很虚构,因此很难检查。
四。装饰图案的应用场景
1,在不影响其他对象的情况下,以动态透明的方式向单个对象添加职责。
2,处理可动态添加到对象中的可撤销的职责,这些功能可以动态撤消。
三.当非彩色的生成子类的方法推广。一种情况是,可能有大量独立的扩展,将产生大量的子类来支持每一个组合,使得子类爆炸性增长的数量。另一种情况可能是,类的定义是隐藏的,或类的定义不能用生成子类。
五。php装饰模式的一个例子
< PHP
*抽象组件角色
* /
界面组件{
*样品的方法
* /
公共职能运作();
}
*装饰的作用
* /
抽象类装饰器实现组件{
保护_component美元;
公共功能__construct(组件$组件){
美元-> _component = $组成;
}
公共函数操作(){
这_component美元-> ->运行();
}
}
*具体装修甲级
* /
类concretedecoratora延伸装饰{
公共功能__construct(组件$组件){
家长::__construct(元部件);
}
公共函数操作(){
父::(操作);调用装饰操作。
(美元-> addedoperationa); / /新业务
}
*新增加的操作A,即装饰的功能。
* /
公共功能addedoperationa(){
echo'add操作;
}
}
*特殊装饰B级
* /
类concretedecoratorb延伸装饰{
公共功能__construct(组件$组件){
家长::__construct(元部件);
}
公共函数操作(){
父::操作();
美元-> addedoperationb();
}
*新增加的操作B,即装饰的功能。
* /
公共功能addedoperationb(){
echo'add操作B;
}
}
*具体成分
* /
类的混凝土构件实现了组件{
公共函数操作(){
echo'concrete组件操作;
}
}
*客户端
* /
客户端类{
*主程序。
* /
公共静态函数main(){
美元=新的混凝土构件(组件);
decoratora美元=新concretedecoratora(元部件);
decoratorb =新concretedecoratorb美元(美元decoratora);
decoratora美元->运行();
decoratorb美元->运行();
}
}
客户::主();
>
以上是利用php来实现装饰图案的代码,和一些装饰图案的概念区别,希望对你有所帮助。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。