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 Static延迟静态绑定用法分析

    PHP Static延迟静态绑定用法分析

    这篇文章主要介绍了PHP Static延迟静态绑定用法,结合实例形式较为详细的分析了Static延迟静态绑定的功能,定义及使用技巧,需要的朋友可以参考下
    2016-03-03
  • PHP fgetcsv 定义和用法(附windows与linux下兼容问题)

    PHP fgetcsv 定义和用法(附windows与linux下兼容问题)

    PHP fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段。与PHP fgets() 类似,不同的是 PHP fgetcsv() 解析读入的行并找出 CSV 格式的字段,然后返回一个包含这些字段的数组
    2012-05-05
  • PHP结合jQuery实现找回密码

    PHP结合jQuery实现找回密码

    本文将使用PHP+Mysql+jQuery来实现一个密码找回的功能,分享给大家思路和具体的代码,有需要的小伙伴可以参考下。
    2015-07-07
  • php SQL Injection with MySQL

    php SQL Injection with MySQL

    本文仅用于教学目的,如果因为本文造成的攻击后果本人概不负责,本文所有代码均为本人所写,所有数据均经过测试。绝对真实。
    2011-02-02
  • PHP面向对象程序设计__tostring()和__invoke()用法分析

    PHP面向对象程序设计__tostring()和__invoke()用法分析

    这篇文章主要介绍了PHP面向对象程序设计__tostring()和__invoke()用法,结合实例形式分析了__tostring()和__invoke()功能、用法及相关操作注意事项,需要的朋友可以参考下
    2019-06-06
  • 来自phpguru得Php Cache类源码

    来自phpguru得Php Cache类源码

    群里也有些朋友对基础知识很不屑,总说有能力就可以了,基础知识考不出来什么.对于这样的观点,我一直不苟同.
    2010-04-04
  • windows下PHP APACHE MYSQ完整配置

    windows下PHP APACHE MYSQ完整配置

    windows下PHP APACHE MYSQ完整配置...
    2007-01-01
  • php引用和拷贝的区别知识点总结

    php引用和拷贝的区别知识点总结

    在本篇文章里小编给大家分享的是关于php引用和拷贝的区别以及相关知识点总结,需要的朋友们学习下。
    2019-09-09
  • php 字符串替换的方法

    php 字符串替换的方法

    使用explode函数,把要替换的字符串做为分割符号,然 后把两个数组元素中间接上要换成的字符串,然后UPDATE一下就行了
    2012-01-01
  • PHP中list方法用法示例

    PHP中list方法用法示例

    这篇文章主要介绍了PHP中list方法用法,结合实例形式分析了list方法实现将数组值赋给变量的相关操作技巧与注意事项,需要的朋友可以参考下
    2016-12-12

最新评论