服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - php设计模式 Mediator (中介者模式)

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

2019-12-01 12:37PHP教程网 PHP教程

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

代码如下:


<?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"); 

延伸 · 阅读

精彩推荐