加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP职责链模式怎样成功实现,代码是什么

发布时间:2023-05-05 13:51:17 所属栏目:PHP教程 来源:
导读:这篇文章给大家介绍了“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
 
";
 
} else {
 
$this->_handler->handleRequest($request);
 
}
 
}
 
}
 
class ConcreteHandlerOdd extends Handler
 
{
 
public function handleRequest($request)
 
{
 
if($request % 2)
 
{
 
echo $request." is odd
 
";
 
} else {
 
$this->_handler->handleRequest($request);
 
}
 
}
 
}
 
class ConcreteHandlerEven extends Handler
 
{
 
public function handleRequest($request)
 
{
 
if(!($request % 2))
 
{
 
echo $request." is even
 
";
 
} 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);
 
}
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!