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

php教程评论237 views阅读模式

复制代码 代码如下:

/**

* 职责链模式

*

* 为解除请求的发送者和接收者之间的耦合,而使用多个对象都用机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它

*

*/

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);

}

企鹅博客
  • 本文由 发表于 2020年8月4日 10:22:44
  • 转载请务必保留本文链接:https://www.qieseo.com/311488.html

发表评论