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合并数组+与array_merge的区别分析
Aug 01 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
php获取json数据所有的节点路径
May 17 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
PHP多进程简单实例小结
Nov 09 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
第十二节--类的自动加载
2006/11/16 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
php中adodbzip类实例
2014/12/08 PHP
php文件缓存方法总结
2016/03/16 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python获取apk文件URL地址实例
2013/11/01 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
python实现文件的分割与合并
2019/08/29 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
珍珠奶茶店创业计划书
2014/01/11 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
校园广播站开场白
2015/06/01 职场文书
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis