php装饰者模式简单应用案例分析


Posted in PHP onOctober 23, 2019

本文实例讲述了php装饰者模式简单应用。分享给大家供大家参考,具体如下:

装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

示例:

A、B、C编辑同一篇文章。

class Article{
  protected $content;
  public function __construct($info){
    $this->content = $info;
  }
}
class editor_A extends Article{
  public function __construct(Article $obj){
    $this->content = $obj->content . '<br/>' . '编辑A新写的内容';
  }
  public function decorator(){
    return $this->content;
  }
}
class editor_B extends Article{
  public function __construct(Article $obj){
    $this->content = $obj->content . '<br/>' . '编辑B新写的内容';
  }
  public function decorator(){
    return $this->content;
  }
}
class editor_C extends Article{
  public function __construct(Article $obj){
    $this->content = $obj->content . '<br/>' . '编辑C新写的内容';
  }
  public function decorator(){
    return $this->content;
  }
}
$artCls = new Article('你好');
//编辑A先秀修改,然后编辑B修改,然后编辑C修改
$a = new editor_A($artCls);
$b = new editor_B($a);
$c = new editor_C($b);
echo $c->decorator();
//编辑B先秀修改,然后编辑A修改
$b = new editor_B($artCls);
$a = new editor_A($b);
echo $a->decorator();
//重点是传递参数的地方,使用Article $obj传递上一个操作的对象,
//来实现对同一个对象进行连续操作

运行结果:

你好
编辑A新写的内容
编辑B新写的内容
编辑C新写的内容你好
编辑B新写的内容
编辑A新写的内容

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
在数据量大(超过10万)的情况下
Jan 15 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
使用PHP编写的SVN类
Jul 18 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
PHP简单日历实现方法
Jul 20 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
laravel 数据验证规则详解
Oct 23 #PHP
php适配器模式简单应用示例
Oct 23 #PHP
Laravel 自定命令以及生成文件的例子
Oct 23 #PHP
laravel 创建命令行命令的图文教程
Oct 23 #PHP
php桥接模式应用案例分析
Oct 23 #PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 #PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 #PHP
You might like
一个用于MySQL的PHP XML类
2006/10/09 PHP
php实现简单洗牌算法
2013/06/18 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
一份婚庆公司创业计划书
2014/01/11 职场文书
安全教育感言
2014/03/04 职场文书
国际会计专业求职信
2014/08/04 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
领导离职感言
2015/08/03 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
Python借助with语句实现代码段只执行有限次
2022/03/23 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技