zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php设计模式ChainOfResponsibility(职责链模式)

2023-06-13 09:14:29 时间
复制代码代码如下:

<?php
/**
*职责链模式
*
*为解除请求的发送者和接收者之间的耦合,而使用多个对象都用机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它
*
*/
abstractclassHandler
{
protected$_handler=null;
publicfunctionsetSuccessor($handler)
{
$this->_handler=$handler;
}
abstractfunctionhandleRequest($request);
}
classConcreteHandlerZeroextendsHandler
{
publicfunctionhandleRequest($request)
{
if($request==0)
{
echo"0<br/>";
}else{
$this->_handler->handleRequest($request);
}
}
}
classConcreteHandlerOddextendsHandler
{
publicfunctionhandleRequest($request)
{
if($request%2)
{
echo$request."isodd<br/>";
}else{
$this->_handler->handleRequest($request);
}
}
}
classConcreteHandlerEvenextendsHandler
{
publicfunctionhandleRequest($request)
{
if(!($request%2))
{
echo$request."iseven<br/>";
}else{
$this->_handler->handleRequest($request);
}
}
}
//实例一下
$objZeroHander=newConcreteHandlerZero();
$objEvenHander=newConcreteHandlerEven();
$objOddHander=newConcreteHandlerOdd();
$objZeroHander->setSuccessor($objEvenHander);
$objEvenHander->setSuccessor($objOddHander);
foreach(array(2,3,4,5,0)as$row)
{
$objZeroHander->handleRequest($row);
}