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 相关文章推荐
dedecms系统常用术语汇总
Apr 03 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 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
实现树状结构的两种方法
2006/10/09 PHP
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
js身份证验证超强脚本
2008/10/26 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python实现猜数游戏
2020/03/27 Python
Python中如何添加自定义模块
2020/06/09 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
全国道德模范事迹
2014/02/01 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
第一军规观后感
2015/06/12 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server