作者:南丞 时间:2018-01-31 01:00
<?php
header("Content-type: text/html; charset=utf-8");
require_once './vendor/autoload.php';
/**
* 抽象 中介者类
*/
abstract class Department{
/**
* 发送内容
* $message 内容
* $Colleague 同事实例
*/
public abstract function Declared($Message, $Colleague);
}
/**
* 创建一个 - 技术部部门
*/
class Technical extends Department{
public $CountryChen; // 小陈
public $CountryLin; // 小林
# 发送消息
public function Declared($Message, $Colleague) {
# 小陈的话是要传给小林的
if($Colleague == $this->CountryChen){
$this->CountryLin->GetMessage($Message);
}
else {
$this->CountryChen->GetMessage($Message);
}
}
}
/**
* 抽象 同事类
*/
abstract class Colleague{
protected $Mediator; // 中介者实例
# 获得中介者实例
public function __construct($Mediator){
$this->Mediator = $Mediator;
}
}
/**
* 创建一个同事 - 小陈
*/
class Chen extends Colleague{
public function __construct($Mediator){
parent::__construct($Mediator); // 调用父类构造方法
}
# 发送消息
public function Declared($Message){
$this->Mediator->Declared($Message, $this);
}
# 获得消息
public function GetMessage($Message){
echo "小陈获得对方消息:{$Message}<br/>";
}
}
/**
* 创建一个同事 - 小林
*/
class Lin extends Colleague{
public function __construct($Mediator){
parent::__construct($Mediator); // 调用父类构造方法
}
# 发送消息
public function Declared($Message){
$this->Mediator->Declared($Message, $this);
}
# 获得消息
public function GetMessage($Message){
echo "小林获得对方消息:{$Message}<br/>";
}
}
# 生成中介者实例
$Men = new Technical();
# 实例化同事 - 小陈、小林
$A = new Chen($Men);
$B = new Lin($Men);
$Men->CountryChen = $B; // 小陈要对小林说话
$Men->CountryLin = $A; // 小林要对小陈说话
$A->Declared("周经理让你过去他办公室一趟!");
$B->Declared("好的,我现在就过去。");