<?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);
} } //---- class HtmlFilter extends MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler);
} public function filter($msg)
{
return "过滤掉HTML标签|".parent::filter($msg);
}
} class SensitiveFilter extends MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler);
} public function filter($msg)
{
return "过滤掉HTML|".parent::filter($msg);// 过滤掉敏感词的处理这时只是加个文字没有进行处理
} } $obj = new HtmlFilter(new SensitiveFilter(new MessageBoard())); echo $obj->filter("一定学好装饰模式<br/>");

最新文章

  1. A chatroom for all! Part 1 - Introduction to Node.js(转发)
  2. C#读取XML文件并取值
  3. HANA学习笔记1-搭建HANA学习环境
  4. [leetcode 27]Implement strStr()
  5. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
  6. 对编写html代码的几点儿小建议
  7. Ubuntu 14.04搭建简单git服务器
  8. MyBatis学习总结(5)——实现关联表查询
  9. 通过javascript实现1~100内能同时被2和3整除的数并生成如下表格
  10. html5 画布上的rotate使用
  11. 百度地图api 区级以下行政区划
  12. Docker(4):Docker集中化web界面管理平台—Shipyard部署
  13. 网络流24题——数字梯形问题 luogu 4013
  14. Android开发 集成极光推送中的问题
  15. B-树 B+树复习总结
  16. 1006 Tick and Tick
  17. 接口配置信息修改 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证
  18. EJBCA的安装(基于Ubuntu 16.04 LTS + wildfly8 + ejbca6.3.11 + jdk7)
  19. 对spring 对持久层的支持和数据库连接池的理解
  20. Servlet Response 重定向

热门文章

  1. hdu 2571 命运(递推,请小心)
  2. 评论 ”[实例] 设计基于JQM的WebApp“
  3. poj 3317 Stake Your Claim 极大极小搜索
  4. Textures
  5. java web多线程
  6. Linux文件查找命令find,xargs详述
  7. Samba 服务使用的端口和协议(是一组TCP UDP协议的组合,主要使用CIFS协议,有一个Java例子)
  8. 研究CPU的好文章以及博客
  9. jQuery常见面试题(转)
  10. 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作