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 相关文章推荐
PHP下MAIL的另一解决方案
Oct 09 PHP
PHP+ajax 无刷新删除数据
Feb 20 PHP
PHP 金额数字转换成英文
May 06 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php实现文件下载代码分享
Aug 19 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
PHP文件上传类实例详解
Apr 08 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
PHP多进程编程实例详解
Jul 19 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
封装一个PDO数据库操作类代码
2009/09/09 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
js AspxButton的客户端操作
2009/06/26 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
python getopt详解及简单实例
2016/12/30 Python
详谈python http长连接客户端
2017/06/12 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
医药工作者的求职信范文
2013/09/21 职场文书
机械专业毕业生自荐信
2013/11/02 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
高中语文教学反思范文
2016/02/16 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
导游词之日本富士山
2020/01/06 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server