用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互

/**

* 中介者模式

*

* 用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互

*/

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

中介者模式php,php设计模式 Mediator (中介者模式)相关推荐

  1. 设计模式——Mediator(中介者)模式

    目录 前言 1 定义 2 适用性 3 结构 3.1 结构图 3.2 参与者 4 应用举例--以房产中介为例 4.1 Mediator--HouseMediator 4.2 具体Mediator--Be ...

  2. C++设计模式-Mediator中介者模式

    Mediator中介者模式 作用:用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. UML如下: Colleage抽象同事 ...

  3. php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)

    废话不多说了,先给大家介绍注册树模式然后介绍工厂模式最后给大家介绍单列模式,本文写的很详细,一起来学习吧. php注册树模式 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里 ...

  4. java设计模式装饰者模式优点_java设计模式之--装饰者模式

    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装 ...

  5. 设计模式之外观模式php,php设计模式(十五)外观模式

    外观模式又叫门面模式: 现在都是模块化开发了: 开发中很多时候都是在使用各种扩展包: 或者在外观模式中我们叫做子系统: 外观模式的作用就是减少子系统之间的耦合: 降低子系统的使用难度: 我们举个栗子: ...

  6. android 装饰着模式,Android与设计模式——装饰者(Decorator)模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替 ...

  7. python 享元模式_Python与设计模式之享元模式

    一.网上咖啡选购平台 假设有一个网上咖啡选购平台,客户可以在该平台上下订单订购咖啡,平台会根据用户位置进行线下配送.假设其咖啡对象构造如下: class Coffee: name = '' price ...

  8. 中介者模式php,PHP设计模式之中介者模式

    上回说道,我们在外打工的经常会和一类人有很深的接触,那就是房产中介.大学毕业后马上就能在喜欢的城市买到房子的X二代不在我们的考虑范围内哈.既然需要长期的租房,那么因为工作或者生活的变动,不可避免的一两 ...

  9. 装饰者模式 php,PHP设计模式之装饰器模式

    装饰器设计模式 什么是装饰器模式 装饰器模式就是对一个已有的结构增加装饰.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象 ...

最新文章

  1. TCP/IP学习入门笔记
  2. Lesson 13.2 模型拟合度概念介绍与欠拟合模型的结构调整策略
  3. linux设置环境变量_Linux怎么设置系统环境变量之export命令详解
  4. 论文阅读:BPFINet: Boundary-aware progressive feature integration network for salient object detection
  5. 【3】测试用例设计-因果图
  6. string-indexOf、substring、split
  7. 考研南邮和杨大计算机,江苏省这4所“非211”低调有实力,从不争名次,毕业生颇受欢迎...
  8. Java配置Path
  9. ubuntu16.04修改鼠标按键功能
  10. 半导体上下游最核心供应商名单(建议收藏)
  11. Windows 下使用PDH 获取CPU 使用率
  12. Python每日一记42机器学习中特征重要性feature_importances_
  13. 华为鸿蒙os下载安装,华为鸿蒙系统安装包
  14. 【归并排序】【洛谷】【P1309-瑞士轮】
  15. ios app 应用内购买配置完全指南
  16. 微信小程序之日期时间筛选器实现(支持年月日时分)
  17. 计算机中专综合知识,湖南省汨罗市职业中专高考(八)计算机应用专业综合知识试题讲解.doc...
  18. 在这个产品同质化比较严重的时代,这个局怎么破?
  19. 用python生成个性二维码
  20. Smarty之section

热门文章

  1. 机器学习在B站推荐系统的应用实践
  2. 【推荐实践】微博多尺度序列推荐算法实践.pdf(附下载链接)
  3. 【报告分享】2021年中国数字经济就业发展研究报告.pdf(附下载链接)
  4. 面试微软等公司必备的书
  5. 他山之石 | 腾讯 多模态内容理解技术及应用
  6. 为什么中国企业海外营销都选择Facebook?
  7. Leetcode每日一题:140.word-break-ii(单词拆分)
  8. LeetCode每日一题:2.两数相加
  9. Redis基础(二)——通用命令和配置
  10. 西瓜书+实战+吴恩达机器学习(二)机器学习基础(偏差、方差、调试模型技巧)