PHP设计模式之装饰者模式
2024-10-18 18:32: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);
} } //---- 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/>");
最新文章
- A chatroom for all! Part 1 - Introduction to Node.js(转发)
- C#读取XML文件并取值
- HANA学习笔记1-搭建HANA学习环境
- [leetcode 27]Implement strStr()
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
- 对编写html代码的几点儿小建议
- Ubuntu 14.04搭建简单git服务器
- MyBatis学习总结(5)——实现关联表查询
- 通过javascript实现1~100内能同时被2和3整除的数并生成如下表格
- html5 画布上的rotate使用
- 百度地图api 区级以下行政区划
- Docker(4):Docker集中化web界面管理平台—Shipyard部署
- 网络流24题——数字梯形问题 luogu 4013
- Android开发 集成极光推送中的问题
- B-树 B+树复习总结
- 1006 Tick and Tick
- 接口配置信息修改 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证
- EJBCA的安装(基于Ubuntu 16.04 LTS + wildfly8 + ejbca6.3.11 + jdk7)
- 对spring 对持久层的支持和数据库连接池的理解
- Servlet Response 重定向
热门文章
- hdu 2571 命运(递推,请小心)
- 评论 ”[实例] 设计基于JQM的WebApp“
- poj 3317 Stake Your Claim 极大极小搜索
- Textures
- java web多线程
- Linux文件查找命令find,xargs详述
- Samba 服务使用的端口和协议(是一组TCP UDP协议的组合,主要使用CIFS协议,有一个Java例子)
- 研究CPU的好文章以及博客
- jQuery常见面试题(转)
- 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作