中介者模式是一种行为型模式,它包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可以彼此独立的变化。

主要角色

中介者(Mediator)角色:定义了对象间相互作用的接口

具体中介者(ConcreteMediator)角色:实现了中介者定义的接口。

具体对象(ConcreteColleague)角色:通过中介者和别的对象进行交互

实例

abstract class Mediator { // 中介者角色

abstract public function send($message,$colleague);

}

abstract class Colleague { // 抽象对象

private $_mediator = null;

public function __construct($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) { }

}

class Colleague2 extends Colleague { // 具体对象角色

public function notify($message) { }

}

// client

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

?>

php中介模式,中介者模式(Mediator pattern)详解及PHP实现相关推荐

  1. 设计模式 - 抽象工厂模式(abstract factory pattern) 详解

    抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/270916 ...

  2. 工程之星android版使用,安卓版工程之星软件网络1+1模式及网络cors连接操作详解...

    原标题:安卓版工程之星软件网络1+1模式及网络cors连接操作详解 现在,越来越多用户开始使用安卓版工程之星进行作业,科力达技术工程师总结了安卓版工程之星网络1+1模式及网络CORS连接方式操作步骤, ...

  3. java 配置jmstemplate_SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解...

    1.导入jar包: org.springframework.boot spring-boot-starter-activemq org.apache.activemq activemq-pool 2. ...

  4. 命令行模式下几个网络命令详解

    命令行模式下几个网络命令详解 上一篇 / 下一篇  2007-05-16 16:20:55 查看( 166 ) / 评论( 0 ) / 评分( 0 / 0 ) 命令行模式下几个网络命令详解 一.pin ...

  5. Java设计模式之中介者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  6. Java设计模式之模板方法模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  7. java设计模式之建造者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  8. python文件对象提供了3个读方法、分别是-Python读写文件模式和文件对象方法实例详解...

    本文实例讲述了Python读写文件模式和文件对象方法.分享给大家供大家参考,具体如下: 一. 读写文件模式 利用open() 读写文件时,将会返回一个 file 对象,其基本语法格式如: open ( ...

  9. java observer模式_Java观察者模式(Observer)详解及应用

    Java观察者模式(Observer)详解及应用 (2011-12-15 14:03:30) 标签: 杂谈 Java观察者模式(Observer)详解及应用 由于网站带有弱sns功能,因此需要设计关注 ...

  10. java设计模式之工厂模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

最新文章

  1. 阿里,腾讯,拼多多面试必挂:面对千万级、亿级流量怎么处理?
  2. Oracle RMAN CATALOG数据库的配置
  3. Android 快捷方式的创建与查询 快捷方式问题大全 获取快捷方式在Launcher数据库中的信息 Failed to find provider info for com.android.la
  4. python基础入门视频-Python基础入门视频课程——笔记
  5. [密码学基础][每个信息安全博士生应该知道的52件事]52.先进的应用概念 系统的大致安全需求
  6. 实战 | 手把手教你设计优惠券前后台
  7. 驱动备份工具哪个好_互联网推广工具哪个好
  8. 中职计算机基础课教学策略研究,中职计算机基础知识教学方法及教学策略研究.doc...
  9. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(一)
  10. MQTT 固定报头 中 剩余长度字段的计算
  11. 解开发者之痛:中国移动MySQL数据库优化最佳实践
  12. vivado中FIFO IP核的Standard FIFO和First-word-Fall-Through模式的仿真比较
  13. mysql课设体会_课程设计心得体会8篇
  14. Ckplayer视频播放器使用方法介绍
  15. 不用重启电脑,就可以刷新系统变量
  16. 解决联想拯救者打开AMD Radeon Software弹出“The version of AMD Radeon Software ......”框问题
  17. pyinstaler打包paddle
  18. C++游戏界面不流畅的问题
  19. 【杭电-oj】-1234-开门人关门人-(-结构体-经典例题)
  20. IT人的福音:一次腰椎间盘突出引起疼痛的过程记录

热门文章

  1. 选择最合适的预测性维护传感器
  2. YOLOV4知识点分析(一)
  3. 如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)
  4. TabLayout的指示器长度 的问题
  5. .svn提交项目提示更新副本
  6. 大话设计模式笔记(七)の原型模式
  7. PASCAL VOC工具包解读
  8. MyBatis启动:MapperStatement创建
  9. (一)Java基础巩固
  10. mySQL笔记(1)