Copy Code code as follows:
<?php
/**
* Responsibility Chain Mode
*
* To unlock the coupling between the sender and receiver of the request, use multiple objects to process the request, connect the objects into a chain, and pass the request along the chain until an object handles it
*
*/
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);
}
}
}
Example
$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);
}