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

怎么去改变PHP中介者模式的交互?

发布时间:2023-01-31 11:04 所属栏目:121 来源:互联网
导读:关于怎么改变PHP中介者模式的交互?的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。 代码如下: /** * 中介者模式 * * 用一个中介对
  关于“怎么改变PHP中介者模式的交互?”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。
 
  代码如下:
 
  /**
 
  * 中介者模式
 
  *
 
  * 用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互
 
  */
 
  abstract class Mediator
 
  {
 
  abstract public function send($message,$colleague);
 
  }
 
  abstract class Colleague
 
  {
 
  private $_mediator = null;
 
  public function Colleague($mediator)
 
  {
 
  $this->_mediator = $mediator;
 
  }
 
  public function send($message)
 
  {
 
  $this->_mediator->send($message,$this);
 
  }
 
  abstract public function notify($message);
 
  }
 
  class ConcreteMediator extends Mediator
 
  {
 
  private $_colleague1 = null;
 
  private $_colleague2 = null;
 
  public function send($message,$colleague)
 
  {
 
  if($colleague == $this->_colleague1)
 
  {
 
  $this->_colleague1->notify($message);
 
  } else {
 
  $this->_colleague2->notify($message);
 
  }
 
  }
 
  public function set($colleague1,$colleague2)
 
  {
 
  $this->_colleague1 = $colleague1;
 
  $this->_colleague2 = $colleague2;
 
  }
 
  }
 
  class Colleague1 extends Colleague
 
  {
 
  public function notify($message)
 
  {
 
  echo "Colleague1 Message is :".$message."
 
  ";
 
  }
 
  }
 
  class Colleague2 extends Colleague
 
  {
 
  public function notify($message)
 
  {
 
  echo "Colleague2 Message is :".$message."
 
  ";
 
  }
 
  }
 
  //
 
  $objMediator = new ConcreteMediator();
 
  $objC1 = new Colleague1($objMediator);
 
  $objC2 = new Colleague2($objMediator);
 
  $objMediator->set($objC1,$objC2);
 
  $objC1->send("to c2 from c1");
 
  $objC2->send("to c1 from c2")
 

(编辑:ASP站长网)

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