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 EOT定界符的使用详解
Sep 30 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 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
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php实现天干地支计算器示例
2014/03/14 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
实例讲解PHP表单处理
2019/02/15 PHP
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
django-filter和普通查询的例子
2019/08/12 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
新闻专业应届生求职信
2013/10/31 职场文书
给女朋友的道歉信
2014/01/10 职场文书
初二政治教学反思
2014/01/12 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
工作检讨书怎么写
2015/01/23 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL