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 相关文章推荐
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
织梦模板标记简介
Mar 11 PHP
PHP函数常用用法小结
Feb 08 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
PHP实现模拟http请求的方法分析
Dec 20 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创建多级目录的方法
2015/03/24 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
vue中如何使用ztree
2018/02/06 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python+Wordpress制作小说站
2017/04/14 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
用django设置session过期时间的方法解析
2019/08/05 Python
django连接oracle时setting 配置方法
2019/08/29 Python
Python更换pip源方法过程解析
2020/05/19 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
公司庆典邀请函范文
2014/01/13 职场文书
情侣吵架检讨书
2014/02/05 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技