Content

PHP设计模式之中介者模式浅析(中介者模式的定义和特点)深度揭秘

文章摘要

这篇文章介绍了中介者模式(Mediator Pattern)的实现,通过PHP代码展示了如何使用该模式协调不同组件之间的交互。文章首先定义了抽象中介者类(`Mediator`)和抽象同事类(`Colleague`),并明确了它们的接口方法。接着,具体实现了`ConcreteMediator`类,该类通过设置不同的“同事”对象来决定消息传递的目标。最后,示例展示了如何通过`ConcreteColleague1`和`ConcreteColleague2`类,利用中介者模式实现消息在不同组件之间的传递与响应。文章整体上简洁明了,重点突出中介者模式的核心思想及其在实际编程中的应用。

<?php // 抽象中介者 abstract class Mediator { abstract public function send($message, $colleague); } // 抽象同事类 abstract class Colleague { protected $mediator; public function __construct(Mediator $mediator) { $this->mediator=$mediator; } abstract public function send($message); abstract public function receive($message); } // 具体中介者 class ConcreteMediator extends Mediator { private $colleague1; private $colleague2; public function setColleague1(Colleague $colleague) { $this->colleague1=$colleague; } public function setColleague2(Colleague $colleague) { $this->colleague2=$colleague; } public function send($message, $colleague) { if ($colleague==$this->colleague1) { $this->colleague2->receive($message); } else { $this->colleague1->receive($message); } } } // 具体同事类 class ConcreteColleague1 extends Colleague { public function send($message) { $this->mediator->send($message, $this); } public function receive($message) { echo “ConcreteColleague1 received message: $message\n”; } } class ConcreteColleague2 extends Colleague { public function send($message) { $this->mediator->send($message, $this); } public function receive($message) { echo “ConcreteColleague2 received message: $message\n”; } }