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
Dec 14 PHP
收集的PHP中与数组相关的函数
Mar 22 PHP
PHP6 mysql连接方式说明
Feb 09 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
PHP线程的内存回收问题
Jul 08 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
PHP运行模式汇总
Nov 06 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 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
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php通过session防url攻击方法
2014/12/10 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
JS随机密码生成算法
2019/09/23 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python求crc32值的方法
2014/10/05 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
专科毕业生求职简历的自我评价
2013/10/12 职场文书
会计学应届毕业生推荐信
2013/11/04 职场文书
求职信需要的五点内容
2014/02/01 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2014年招生工作总结
2014/11/26 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript