<div class="codetitle"><a style="CURSOR: pointer" data="17515" class="copybut" id="copybut17515" onclick="doCopy('code17515')"> 代码如下:<div class="codebody" id="code17515"> <?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); }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|