php设计模式 Chain Of Responsibility (职责链模式)


Posted in PHP onJune 26, 2011
<?php 
/** 
* 职责链模式 
* 
* 为解除请求的发送者和接收者之间的耦合,而使用多个对象都用机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它 
* 
*/ 
abstract class Handler 
{ 
protected $_handler = null; 
public function setSuccessor($handler) 
{ 
$this->_handler = $handler; 
} 
abstract function handleRequest($request); 
} 
class ConcreteHandlerZero extends Handler 
{ 
public function handleRequest($request) 
{ 
if($request == 0) 
{ 
echo "0<br/>"; 
} else { 
$this->_handler->handleRequest($request); 
} 
} 
} 
class ConcreteHandlerOdd extends Handler 
{ 
public function handleRequest($request) 
{ 
if($request % 2) 
{ 
echo $request." is odd<br/>"; 
} else { 
$this->_handler->handleRequest($request); 
} 
} 
} 
class ConcreteHandlerEven extends Handler 
{ 
public function handleRequest($request) 
{ 
if(!($request % 2)) 
{ 
echo $request." is even<br/>"; 
} else { 
$this->_handler->handleRequest($request); 
} 
} 
} 
// 实例一下 
$objZeroHander = new ConcreteHandlerZero(); 
$objEvenHander = new ConcreteHandlerEven(); 
$objOddHander = new ConcreteHandlerOdd(); 
$objZeroHander->setSuccessor($objEvenHander); 
$objEvenHander->setSuccessor($objOddHander); 
foreach(array(2,3,4,5,0) as $row) 
{ 
$objZeroHander->handleRequest($row); 
}
PHP 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
PHP 引用是个坏习惯
Mar 12 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
PHP速成大法
Jan 30 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
PHP判断浏览器、判断语言代码分享
Mar 05 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
php排序算法实例分析
Oct 17 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
解决laravel session失效的问题
Oct 14 PHP
PHP获取类私有属性的3种方法
Sep 10 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 #PHP
php设计模式 Mediator (中介者模式)
Jun 26 #PHP
php设计模式 Prototype (原型模式)代码
Jun 26 #PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 #PHP
session在PHP大型web应用中的使用
Jun 25 #PHP
php URL跳转代码 减少外链
Jun 25 #PHP
php session安全问题分析
Jun 24 #PHP
You might like
合作指挥官:孟斯克
2020/03/16 星际争霸
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
jquery cookie的用法总结
2013/11/18 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python 如何测试文件是否存在
2020/07/31 Python
python3.5的包存放的具体路径
2020/08/16 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
工地安全检查制度
2014/02/04 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书