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 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
第五章 php数组操作
Dec 30 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 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
PHP 柱状图实现代码
2009/12/04 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
js判断是否是手机页面
2017/03/17 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
Python写的一个简单监控系统
2015/06/19 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
校班主任推荐信范文
2013/12/03 职场文书
土建工程师岗位职责
2014/06/10 职场文书
团员个人年度总结
2015/02/26 职场文书
教师自荐信范文
2015/03/06 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书