php设计模式 Mediator (中介者模式)


Posted in PHP onJune 26, 2011
<?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."<br/>"; 
} 
} 
class Colleague2 extends Colleague 
{ 
public function notify($message) 
{ 
echo "Colleague2 Message is :".$message."<br/>"; 
} 
} 
// 
$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 相关文章推荐
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
PHP中的日期加减方法示例
Aug 21 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
PDO::lastInsertId讲解
Jan 29 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 #PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 #PHP
session在PHP大型web应用中的使用
Jun 25 #PHP
php URL跳转代码 减少外链
Jun 25 #PHP
php session安全问题分析
Jun 24 #PHP
使用PHP实现二分查找算法代码分享
Jun 24 #PHP
PHP求最大子序列和的算法实现
Jun 24 #PHP
You might like
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
Python入门篇之编程习惯与特点
2014/10/17 Python
Python入门教程之if语句的用法
2015/05/14 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Python实现对adb命令封装
2020/03/06 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
办公室文书岗位职责
2013/12/16 职场文书
销售经理工作职责
2014/02/03 职场文书
个人自我评价范文
2014/02/05 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
债务追讨律师函
2015/06/24 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
高三毕业感言
2015/07/30 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python