php设计模式 Decorator(装饰模式)


Posted in PHP onJune 26, 2011
<?php 
/** 
* 装饰模式 
* 
* 动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活 
*/ 
header("Content-type:text/html;charset=utf-8"); 
abstract class MessageBoardHandler 
{ 
public function __construct(){} 
abstract public function filter($msg); 
} class MessageBoard extends MessageBoardHandler 
{ 
public function filter($msg) 
{ 
return "处理留言板上的内容|".$msg; 
} 
} 
$obj = new MessageBoard(); 
echo $obj->filter("一定要学好装饰模式<br/>"); 
// --- 以下是使用装饰模式 ---- 
class MessageBoardDecorator extends MessageBoardHandler 
{ 
private $_handler = null; 
public function __construct($handler) 
{ 
parent::__construct(); 
$this->_handler = $handler; 
} 
public function filter($msg) 
{ 
return $this->_handler->filter($msg); 
} 
} 
// 过滤html 
class HtmlFilter extends MessageBoardDecorator 
{ 
public function __construct($handler) 
{ 
parent::__construct($handler); 
} 
public function filter($msg) 
{ 
return "过滤掉HTML标签|".parent::filter($msg);; // 过滤掉HTML标签的处理 这时只是加个文字 没有进行处理 
} 
} 
// 过滤敏感词 
class SensitiveFilter extends MessageBoardDecorator 
{ 
public function __construct($handler) 
{ 
parent::__construct($handler); 
} 
public function filter($msg) 
{ 
return "过滤掉敏感词|".parent::filter($msg); // 过滤掉敏感词的处理 这时只是加个文字 没有进行处理 
} 
} 
$obj = new HtmlFilter(new SensitiveFilter(new MessageBoard())); 
echo $obj->filter("一定要学好装饰模式!<br/>");
PHP 相关文章推荐
用PHP和ACCESS写聊天室(二)
Oct 09 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
php中namespace use用法实例分析
Jan 22 PHP
Yii框架数据模型的验证规则rules()被执行的方法
Dec 02 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 PHP
php png失真的原因及解决办法
Nov 17 PHP
php设计模式 Delegation(委托模式)
Jun 26 #PHP
php设计模式 Facade(外观模式)
Jun 26 #PHP
php设计模式 Factory(工厂模式)
Jun 26 #PHP
php设计模式 Interpreter(解释器模式)
Jun 26 #PHP
php设计模式 Strategy(策略模式)
Jun 26 #PHP
php设计模式 Observer(观察者模式)
Jun 26 #PHP
php设计模式 Singleton(单例模式)
Jun 26 #PHP
You might like
简单的php文件上传(实例)
2013/10/27 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Golang与python线程详解及简单实例
2017/04/27 Python
利用aardio给python编写图形界面
2017/08/21 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python简单基础小程序的实例代码
2019/04/28 Python
使用python制作一个解压缩软件
2019/11/13 Python
Python实现图片添加文字
2019/11/26 Python
python实现扫雷游戏
2020/03/03 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
宿舍卫生检讨书
2014/01/16 职场文书
教育技术职业规划范文
2014/03/04 职场文书
请假条范文大全
2014/04/10 职场文书
2014年师德承诺书
2014/05/23 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
部队2014年终工作总结
2014/11/27 职场文书
公司经营目标责任书
2015/01/29 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
《七律·长征》教学反思
2016/02/16 职场文书