//不同的对象,会有不同的处理方式
/**
* 场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,
* 就是在事件的代码之后直接加入处理逻辑,
* 当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的
* ,侵入式的,增加新的逻辑需要改变事件主题的代码
* 观察者模式实现了低耦合,非侵入式的通知与更新机制。
*/
interface Wemessage
{
// 观察者要实现的接口
public function send();
}
class Wepush implements Wemessage // 最终实现微信消息的类
{
public function send()
{
echo '发送微信消息';
}
}
class Payafter
{
// 修改订单信息
private $_ob = []; // 观察者模式
// 修改订单信息
public function register($obj) // 注册
{
$this->_ob = $obj;
}
public function trigger() // 统一执行访问
{
if (!empty($this->_ob)) {
foreach ($this->_ob as $value) {
$value->send();
}
}
}
}
$payAfter = new Payafter();
$payAfter->register(new Wepush()); // 注册观察者
$payAfter->tirgger(); // 执行代码