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函数
Oct 09 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 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合并静态文件详解
2014/11/14 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python实现杨氏矩阵查找
2019/03/02 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
django框架forms组件用法实例详解
2019/12/10 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
Python 定义只读属性的实现方式
2020/03/05 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
经贸日语专业个人求职信范文
2013/12/28 职场文书
酒店端午节促销方案
2014/02/18 职场文书
小学生操行评语
2014/04/22 职场文书
班级旅游计划书
2014/05/03 职场文书
行政文员岗位职责
2015/02/04 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
工伤调解协议书
2016/03/21 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python