首页IT科技php常用的设计模式在开发中的实例有哪些(浅谈PHP设计模式的中介者模式)

php常用的设计模式在开发中的实例有哪些(浅谈PHP设计模式的中介者模式)

时间2025-09-18 00:03:24分类IT科技浏览5679
导读:简介: 中介者模式,属于行为型的设计模式。用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。...

简介:

中介者模式                 ,属于行为型的设计模式                 。用一个中介对象来封装一系列的对象交互                        。中介者是各对象不需要显式地相互引用                        ,从而使其耦合松散        ,而且可以独立地改变他们之间的交互        。

适用场景:

如果平行对象间的依赖复杂                 ,可以使用中介者解耦                 。

优点:

符合迪米特法则                        ,减少成员间的依赖                        。

缺点:

不适用于系统出现对象多对多的的复杂场景时        。

代码: *Mediator接口声明了组件用于向*中介通知各种事件的方法         。中介可能会对这些事件做出反应        ,并将执行传递给其他组件                        。 */ interface Mediator { public function notify(object $sender, string $event): void; } /** *具体中介通过协调几个组件来实现协作行为                。 */ class ConcreteMediator implements Mediator { private $component1; private $component2; public function __construct(Component1 $c1, Component2 $c2) { $this->component1 = $c1; $this->component1->setMediator($this); $this->component2 = $c2; $this->component2->setMediator($this); } public function notify(object $sender, string $event): void { if ($event == "A") { echo "中介者对A作出反应并触发以下操作:\n"; $this->component2->doC(); } if ($event == "D") { echo "中介者对D作出反应并触发以下操作:\n"; $this->component1->doB(); $this->component2->doC(); } } } /** *基本组件提供了在组件对象内存储中介器*实例的基本功能         。 */ class BaseComponent { protected $mediator; public function __construct(Mediator $mediator = null) { $this->mediator = $mediator; } public function setMediator(Mediator $mediator): void { $this->mediator = $mediator; } } /** *具体组件实现各种功能                         。它们不依赖于其他组件                。它们也不依赖于任何具体的中介类 */ class Component1 extends BaseComponent { public function doA(): void { echo "Component 1 does A.\n"; $this->mediator->notify($this, "A"); } public function doB(): void { echo "Component 1 does B.\n"; $this->mediator->notify($this, "B"); } } class Component2 extends BaseComponent { public function doC(): void { echo "Component 2 does C.\n"; $this->mediator->notify($this, "C"); } public function doD(): void { echo "Component 2 does D.\n"; $this->mediator->notify($this, "D"); } } //调用端 $c1 = new Component1(); $c2 = new Component2(); $mediator = new ConcreteMediator($c1, $c2); echo "客户端触发操作A。\n"; $c1->doA(); echo "\n"; echo "客户端触发操作D                         。\n"; $c2->doD();

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
中国银行安全控件怎么安装不了(Mac系统中国银行安全控件安装教程指南图解) 边界条件处理方法(目标检测–边框回归损失函数SIoU原理详解及代码实现)