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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
php 友好URL的实现(吐血推荐)
Oct 04 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
php中的strpos使用示例
Feb 27 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP实现微信退款功能
Oct 02 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
php+redis实现消息队列功能示例
Sep 19 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php 多文件上传的实现实例
2016/10/23 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
js实现字符串的16进制编码不加密
2014/04/25 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python列表切片用法示例
2017/04/19 Python
python 统计代码行数简单实例
2017/05/04 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Python 画出来六维图
2019/07/26 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
数控专业应届生求职信
2013/11/27 职场文书
社区宣传标语口号
2015/12/26 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers