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 无法载入mysql扩展
Mar 12 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
php unlink()函数使用教程
Jul 12 PHP
实现php删除链表中重复的结点
Sep 27 PHP
解决Laravel5.5下的toArray问题
Oct 15 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
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
php上传图片类及用法示例
2016/05/11 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
Js的MessageBox
2006/12/03 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
Angular2库初探
2017/03/01 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
react-redux中connect()方法详细解析
2017/05/27 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
用实例分析Python中method的参数传递过程
2015/04/02 Python
Python+django实现简单的文件上传
2016/08/17 Python
利用python实现数据分析
2017/01/11 Python
Python中类的初始化特殊方法
2017/12/01 Python
PyQt5响应回车事件的方法
2019/06/25 Python
关于Python解包知识点总结
2020/05/05 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
网络编辑求职信
2014/04/30 职场文书
初中同学会活动方案
2014/08/22 职场文书
个人查摆剖析材料
2014/10/16 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
大学生活感想
2015/08/10 职场文书
周一问候语大全
2015/11/10 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android