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配置php-fpm启动参数及配置详解
Nov 04 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
PHP数组与字符串互相转换实例
May 05 PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 PHP
基于PHP实现发微博动态代码实例
Dec 11 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
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
javascript 节点排序 2
2011/01/31 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python文件操作基本流程代码实例
2017/12/11 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python打造爬虫代理池过程解析
2019/08/15 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python matplotlib实时画图案例
2020/04/23 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
毕业生求职推荐信
2013/11/04 职场文书
交通事故委托书范本
2014/09/28 职场文书
公司租房协议书
2014/10/14 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书