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实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
php中AES加密解密的例子小结
Feb 18 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
PHP代码优化技巧小结
Sep 29 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
php pdo连接数据库操作示例
Nov 18 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
javascript如何判断输入的url是否正确
2014/04/11 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
深入理解python多进程编程
2016/06/12 Python
python基于ID3思想的决策树
2018/01/03 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Python自动化操作实现图例绘制
2020/07/09 Python
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
《七颗钻石》教学反思
2014/02/28 职场文书
网吧温馨提示
2015/07/17 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript