设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-01-31 11:05 所属栏目:121 来源:互联网
导读:这篇文章给大家介绍了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);
 
  }
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读