PHP设计模式的装饰模式示例的详细说明
本文展示了PHP设计模式的装饰模式。分享给大家参考,如下:
装饰器模式也称为装饰器模式。Decorator模式在不改变原始类文件和使用继承的情况下动态扩展对象的功能。它通过创建包装对象(即装饰)来包装真实对象。
UML类图:
角色:
组件对象的接口:可以动态地向这些对象添加职责。所有装饰者的父类:需要定义一个与组件接口一致的接口,并持有一个组件对象,它实际上就是被装饰的对象。特定装饰器类:实现要专门添加到装饰对象的功能。用于装饰特定的组件对象或另一个特定的装饰器对象。
特定代码:
?PHP/* * *由PHP Storm创建。*用户:江*日期: 2015年5月3日*时间: 11:11 */* *组件对象接口*接口组件*/接口组件{功能显示();}/* *要修饰的对象* classperson */classperson实现icomponent { private $ namefunction _ _ construct($ name){ $ this-name=$ name;}函数Display() {echo '装扮:{ $ this-name } br/';}}/* *所有装饰器父类* classbread */classbread实现I component { protected $ component;函数装修(IComponent $ component){ $ this-component=$ component;}函数Display() { if(!空($ this-component)){ $ this-component-Display();} } }///-特定装饰者{ Function Display()parent : Display();}}类邱燮延伸衣服{功能显示(){ echo ' shoesparent : display();}} class t恤延伸衣服{功能显示(){echo' t恤';parent : display();} } class wait ao extenses { function display(){ echo ' coat ';parent : display();}}调用客户端测试代码:
标题(' Content-type : text/html;charset=utf-8 ');///-Decorator模式测试代码-require _ once '。/decorator/decorator . PHP ';$姚明=新人(“姚明”);$阿泰=新人(“测试员”);$ Pixie=new Pixie();$ Waitao=new Waitao();$小精灵-装饰($姚明);$ waitao-装修($ pixie);$ waitao-Display();echo ' HR/';$秋霞=新秋霞();$ Tshirt=new Tshirt();$秋喜-装修($阿泰);$ t shirt-装修($秋衣);$ tshirt-Display();适用场景:
1.需要向对象动态添加函数,这些函数可以动态撤销。
2.需要添加大量由一些基本函数的排列组合生成的函数,从而使继承关系不切实际。
3.当生成子类的方法不能用于扩展时。在一种情况下,可能会有大量的独立扩展,并且会生成大量的子类来支持每种组合,这使得子类的数量激增。另一种情况可能是因为类定义是隐藏的,或者类定义不能用于生成子类。
更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、0103010
希望本文对PHP编程有所帮助。
版权声明:PHP设计模式的装饰模式示例的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。