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

 更新时间:2011年06月26日 11:21:59   作者:  
动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活
复制代码 代码如下:

<?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与MySQL开发的8个技巧小结

    PHP与MySQL开发的8个技巧小结

    LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。看了以后,颇有启发,以前开发中遇到的一些问题,迎刃而解。所以翻译出来和大家共享。
    2010-12-12
  • php正则表达式(regar expression)

    php正则表达式(regar expression)

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的语法。
    2011-09-09
  • PHP实现动态删除XML数据的方法示例

    PHP实现动态删除XML数据的方法示例

    这篇文章主要介绍了PHP实现动态删除XML数据的方法,在前面介绍的Message_XML类基础上进行改进,增加了xml删除功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2018-03-03
  • linux iconv方法的使用

    linux iconv方法的使用

    使用iconv方法进行编码转换。在windows平台下面可以正常的工作(本地环境使用的win7),但是在linux环境下面iconv总是返回false(测试环境使用的linux)。
    2011-10-10
  • PHP简单判断字符串是否包含另一个字符串的方法

    PHP简单判断字符串是否包含另一个字符串的方法

    这篇文章主要介绍了PHP简单判断字符串是否包含另一个字符串的方法,实例分析了PHP通过自定义函数实现字符串包含的判断,涉及PHP中explode函数分隔符的使用与判定技巧,需要的朋友可以参考下
    2016-03-03
  • PHP中for循环语句的几种变型

    PHP中for循环语句的几种变型

    PHP中for循环语句的几种变型...
    2006-11-11
  • php实现excel中rank函数功能的方法

    php实现excel中rank函数功能的方法

    这篇文章主要介绍了php实现excel中rank函数功能的方法,较为详细的分析了rank函数的功能及具体实现方法,需要的朋友可以参考下
    2015-01-01
  • php下获取http状态的实现代码

    php下获取http状态的实现代码

    在项目开发中,有时我们需要知道远程的URL地址是否能访问正常,判断其正常与否后进行下一步的操作,那么在PHP中如何获取远程HTTP的状态呢
    2014-05-05
  • PHP中使用glob函数实现一句话删除某个目录下的所有文件

    PHP中使用glob函数实现一句话删除某个目录下的所有文件

    这篇文章主要介绍了PHP中使用glob函数实现一句话删除某个目录下的所有文件,重点在glob函数的使用上,需要的朋友可以参考下
    2014-07-07
  • PHP生成随机数的方法总结

    PHP生成随机数的方法总结

    本篇文章给大家总结了PHP生成随机数的方法并把相关的代码做了分享,有需要的读者们参考学习下吧。
    2018-03-03

最新评论