php设计模式 Mediator (中介者模式)

2015-01-24信息快讯网

用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互

 
<?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"); 
zend framework配置操作数据库实例分析
windows下zendframework项目环境搭建(通过命令行配置)
PHP C EasyUI DataGrid 资料存的方式介绍
PHP C EasyUI DataGrid 资料取的方式介绍
PHP类与对象中的private访问控制的疑问
php类中private属性继承问题分析
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
PHP中数字检测is_numeric与ctype_digit的区别介绍
Zend的AutoLoad机制介绍
说说PHP的autoLoad自动加载机制
如何获知PHP程序占用多少内存(memory_get_usage)
PHP管理内存函数 memory_get_usage()使用介绍
PHP的autoload机制的实现解析
关于UEditor编辑器远程图片上传失败的解决办法
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
php设计模式 FlyWeight (享元模式)
php设计模式 Prototype (原型模式)代码
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
php的memcached客户端memcached
PHP模块 Memcached功能多于Memcache
php模块memcache和memcached区别分析
批量获取memcache值并按key的顺序返回的实现代码
php中使用Akismet防止垃圾评论的代码
php在页面中调用fckeditor编辑器的方法
rephactor 优秀的PHP的重构工具
php错误提示failed to open stream: HTTP request failed!的完美解决方法
PHP中Date()时间日期函数的使用方法小结
写php分页时出现的Fatal error的解决方法
The specified CGI application misbehaved by not returning a complete set of HTTP headers
PHP stream_context_create()作用和用法分析
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
沪房产中介又迎来春天 有的员工月入二三十万
©2014-2024 dbsqp.com