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中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 PHP
php图像验证码生成代码
Jun 08 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 PHP
Yii Framework框架开发微信公众平台示例
Apr 26 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
JAVA/JSP学习系列之七
2006/10/09 PHP
域名查询代码公布
2006/10/09 PHP
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
毕业生自我鉴定实例
2014/01/21 职场文书
学生打架检讨书
2014/02/14 职场文书
高考备战决心书
2014/03/11 职场文书
3分钟演讲稿
2014/04/30 职场文书
个人担保书范文
2014/05/20 职场文书
护士实习求职信
2014/06/22 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
小学师德师风整改措施
2014/10/27 职场文书
2015年招聘工作总结
2014/12/12 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书