php设计模式 Decorator(装饰模式)
2015-01-24信息快讯网
动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活
<?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/>");
php5.3中连接sqlserver2000的两种方法(com与ODBC)
PHP中函数rand和mt_rand的区别比较
zend framework配置操作数据库实例分析
windows下zendframework项目环境搭建(通过命令行配置)
PHP gbk环境下json_dencode传送来的汉字
PHP去掉从word直接粘贴过来的没有用格式的函数
域名和cookie问题(域名后缀)
记录PHP错误日志 display_errors与log_errors的区别
php在程序中将网页生成word文档并提供下载的代码
Linux下CoreSeek及PHP扩展模块的安装
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
PHP 之Section与Cookie使用总结
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
巧用php中的array_filter()函数去掉多维空值的代码分享
比较discuz和ecshop的截取字符串函数php版
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
php设计模式 DAO(数据访问对象模式)
php设计模式 Delegation(委托模式)
php设计模式 Factory(工厂模式)
php设计模式 Strategy(策略模式)
php设计模式 Command(命令模式)
php设计模式 Composite (组合模式)
php设计模式 Mediator (中介者模式)
PHP array操作10个小技巧分享
php设计模式 Command(命令模式)
php在页面中调用fckeditor编辑器的方法
PHP中遍历stdclass object的实现代码
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
rephactor 优秀的PHP的重构工具
使ecshop模板中可引用常量的实现方法
php自动获取字符串编码函数mb_detect_encoding
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
php中在PDO中使用事务(Transaction)
php 数组排序 array_multisort与uasort的区别