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 相关文章推荐
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
windows7配置Nginx+php+mysql的详细教程
Sep 04 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 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执行批量mysql语句的解决方法
2013/05/02 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
python多进程间通信代码实例
2019/09/30 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
自主招生自荐书
2013/11/29 职场文书
心理健康心得体会
2014/01/02 职场文书
校长就职演讲稿
2014/01/06 职场文书
技术总监管理职责范本
2014/03/06 职场文书
小学生学习感言
2014/03/10 职场文书
活动总结书
2014/05/08 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
陕西导游词
2015/02/04 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
高中数学教学反思范文
2016/02/18 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书