PHP - 设计模式之 观察者模式

观察者模式

概述部分

1、观察者模式(observer),当一个对象状态发生改变时,依赖它的对象全部都会收到通知,并自动更新

2、场景:一个事件发生之后,要执行一连串的更新操作。传统的编程方式,就是直接在事件代码的后面,加入处理逻辑。但当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑,就需要修改主体代码

3、观察者模式实现了低耦合,非侵入式的通知和更新机制

 

代码部分

1、事件发生者

2、事件观察者

3、事件主体

这里,Event类调用事件发生者类,然后,调用父类(事件发生者类)通知所有观察者的方法notify,一旦有任何事件发生,便会以便利监听列表的方式,通知到每一个观察者。

具体操作,直接实例对象,调用trigger方法。

如果有事件,调用事件观察者接口,实现接口的update方法,实现相应的更新操作动作

 

 

调用的时候,将事件加入到监听列表

这样

调用trigger方法的时候

会通过调用父类(抽象类)的notify方法

遍历监听列表里的所有的事件,并执行update更新操作,而这里的update操作来自观察者类

而所有的事件,都实现了这个接口

这样,浏览器最后的输出就是:

 

总结

这就是观察者模式的好处,观察者(接口),负责观察一旦有事件发生,就执行相应的更新操作;发生者(抽象类),负责将所有的事件存入监听列表,并通知观察者,执行所有的相应的更新操作。实现了低耦合,避免了主体代码的更改,方便了扩展,代码质量也更加高效!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值