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防止恶意刷新与刷票的方法
Nov 21 PHP
php中explode的负数limit用法分析
Feb 27 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
PHP+redis实现微博的推模型案例分析
Jul 10 PHP
php生成微信红包数组的方法
Sep 05 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 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
Protoss魔法科技
2020/03/14 星际争霸
开发大型PHP项目的方法
2006/10/09 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
PHP多例模式介绍
2013/06/24 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
页面使用密码保护代码
2013/04/10 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
Python迭代用法实例教程
2014/09/08 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
python实现吃苹果小游戏
2020/03/21 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
竞聘副主任科员演讲稿
2014/01/11 职场文书
阳光体育活动方案
2014/02/16 职场文书
入党介绍人评语
2014/05/06 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
颐和园的导游词
2015/01/30 职场文书
户外亲子活动总结
2015/05/08 职场文书
朋友聚会开场白
2015/06/01 职场文书