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 相关文章推荐
PHP4中session登录页面的应用
Jul 25 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
php如何调用webservice应用介绍
Nov 24 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
在Windows XP下安装Apache+MySQL+PHP环境
Feb 22 PHP
php将数组存储为文本文件方法汇总
Oct 28 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 PHP
如何理解PHP核心特性命名空间
May 28 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
js查找节点的方法小结
2015/01/13 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Python实现图片识别加翻译功能
2019/12/26 Python
python批量处理txt文件的实例代码
2020/01/13 Python
django和flask哪个值得研究学习
2020/07/31 Python
Python面试题集
2012/03/08 面试题
小学教师学期末自我评价
2013/09/25 职场文书
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android