观察者模式是个很好的模式,如果没有观察者模式,当要监控一个动作发生时,就要启动一个线程去检测这个动作是否发生了,然后再做相应的事情,是多么的浪费CPU资源。
看下观察者接口,你肯定要问为什么要是一个接口,我告诉你这就是面向接口编程:
具体的执行观察动作的类是这样的:
看到这似乎什么都干,就是这样,因为没有演员呢,观众也不知道干什么。那看下被观察者,可以理解为演员:
也是抽象的,这就是为什么要定义观察者接口的原因了,因为让他们在抽象层耦合,应对变化。具体的做动作的类是下面这样的,当然他得通知观察者,要不然观察者也不会知道发生了什么:
看下客户端:
整体来看,观察者模式似乎没有什么,但是在互联网应用最广泛的大名鼎鼎的消息中间件,用的就是观察者模式。
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。
领取专属 10元无门槛券
私享最新 技术干货