php设计模式 Chain Of Responsibility (职责链模式)

yipeiwu_com5年前PHP代码库
复制代码 代码如下:

<?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间隔一段时间执行代码的方法。分享给大家供大家参考。具体分析如下: PHP如何设置每隔一段时间自动执行某段代码?例如定时生成静态文件之类的,这就需要设置休眠时间,即每隔...

PHP 采集获取指定网址的内容

参考别人想法变成自己的想法,你会发现慢慢下来以后你就拥有了临时解决很多问题的思路与方法。复制代码 代码如下:<?php /* 功能:获取页面内容,存储下来阅读; lost63 */...

PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享

php屏蔽电话号码中间四位: 复制代码 代码如下: Method 1: function hidtel($phone){     $IsWhat...

php实现源代码加密的方法

本文实例讲述了php实现源代码加密的方法。分享给大家供大家参考。具体实现方法如下: <?php function RandAbc($length=""){//返回随...

php define的第二个参数使用方法

看手册说define定义的常量只允许:仅允许标量和 null。标量的类型是 integer, float,string 或者 boolean。 也能够定义常量值的类型为 resource...