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 相关文章推荐
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
PHP队列用法实例
Nov 05 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
分享php邮件管理器源码
Jan 06 PHP
php图像验证码生成代码
Jun 08 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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/05/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
js实现开关灯效果
2020/03/30 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python的多维空数组赋值方法
2018/04/13 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
土木工程专业个人求职信
2013/12/30 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
小学生交通安全寄语
2015/02/27 职场文书
Python 图片添加美颜效果
2022/04/28 Python