PHP设计模式——装饰器模式_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP设计模式——装饰器模式_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2187字,纯文字阅读大概需要4分钟。
内容图文
PHP设计模式——装饰器模式
装饰器模式又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
UML类图:
角色:
组件对象的接口:可以给这些对象动态的添加职责
所有装饰器的父类:需要定义一个与组件接口一致的接口,并持有一个Component对象,该对象其实就是被装饰的对象。
具体的装饰器类:实现具体要向被装饰对象添加的功能。用来装饰具体的组件对象或者另外一个具体的装饰器对象。
具体代码:
name=$name; } function Display() { echo 装扮的:{$this->name} ; } } /**所有装饰器父类 * Class Clothes */ class Clothes implements IComponent { protected $component; function Decorate(IComponent $component) { $this->component=$component; } function Display() { if(!empty($this->component)) { $this->component->Display(); } } } //------------------------------具体装饰器---------------- class PiXie extends Clothes { function Display() { echo 皮鞋 ; parent::Display(); } } class QiuXie extends Clothes { function Display() { echo 球鞋 ; parent::Display(); } } class Tshirt extends Clothes { function Display() { echo T恤 ; parent::Display(); } } class Waitao extends Clothes { function Display() { echo 外套 ; parent::Display(); } }
调用客户端测试代码:
header(Content-Type:text/html;charset=utf-8); //------------------------装饰器模式测试代码------------------ require_once ./Decorator/Decorator.php; $Yaoming=new Person(姚明); $aTai=new Person(A泰斯特); $pixie=new PiXie(); $waitao=new Waitao(); $pixie->Decorate($Yaoming); $waitao->Decorate($pixie); $waitao->Display(); echo
; $qiuxie=new QiuXie(); $tshirt=new Tshirt(); $qiuxie->Decorate($aTai); $tshirt->Decorate($qiuxie); $tshirt->Display();
适用场景:
1. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。
2. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。
3. 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
http://www.bkjia.com/PHPjc/993866.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/993866.htmlTechArticlePHP设计模式——装饰器模式 装饰器模式又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能...
内容总结
以上是互联网集市为您收集整理的PHP设计模式——装饰器模式_PHP教程全部内容,希望文章能够帮你解决PHP设计模式——装饰器模式_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。