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 相关文章推荐
图形数字验证代码
Oct 09 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
PHP实现获取中英文首字母
Jun 19 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
PHP defined()函数的使用图文详解
Jul 20 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中array_multisort对多维数组排序的方法
2020/06/21 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python设置环境变量的原因和方法
2019/06/24 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
python Django的web开发实例(入门)
2019/07/31 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
市场部规章制度
2014/01/24 职场文书
化妆品店促销方案
2014/02/24 职场文书
小学生作文评语
2014/04/18 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
亮剑观后感300字
2015/06/05 职场文书
教师节感想
2015/08/11 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏