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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
php 无限级 SelectTree 类
May 19 PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 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
Symfony2函数用法实例分析
2016/03/18 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python线程指南详细介绍
2017/01/05 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
django将数组传递给前台模板的方法
2019/08/06 Python
Python数据库小程序源代码
2019/09/15 Python
python绘制规则网络图形实例
2019/12/09 Python
python 解决函数返回return的问题
2020/12/05 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
一份报关员的职业规划范文
2014/01/08 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
怎样填写就业意向
2014/04/02 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
群众路线剖析材料
2014/09/30 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
党员学习型组织心得体会
2019/06/21 职场文书