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)
沪房产中介又迎来春天 有的员工月入二三十万