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 和 HTML
Oct 09 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
php分页示例分享
Apr 30 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
php打包压缩文件之ZipArchive方法用法分析
Apr 30 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
php表单处理操作
Nov 16 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
php对称加密算法示例
2014/05/07 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
详解Python中的type()方法的使用
2015/05/21 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
如何利用python进行时间序列分析
2020/08/04 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
幼儿园安全检查制度
2014/01/30 职场文书
合伙经营协议书范本
2014/04/18 职场文书
读书活动总结
2014/04/28 职场文书
初中教师业务学习材料
2014/05/12 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书