观察者模式,可以从名字理解这种模式。
一个主体盯着另一个主体,一旦发生XXX,就XXX。
这样的场景无论在代码中还是在生活中都很常见。
要实现这样的功能,按照直接的思路就是观察者写个while去被观察者那检查关注的指标。
这种做法在软件开发和设计中也很常见,当完全无法改变客体的时候,只能通过这种方式来做。
当目标可以配合的时候,观察者模式就登场了,
观察者模式:将观察者,在目标那注册登记,当状况发生,通知观察者操作。
观察者模式是逻辑上的概念,在代码上只是个接口实现,对象添加,方法调用的过程。
观察者模式在软件设计中用的非常普遍,也有很多变化:如,发布订阅模式,事件总线模式,响应式设计,事件驱动等等。观察者模式可以应用的很小,也可以作为整个系统级别的架构。
这些变型通常只是在观察者与被观察者之间增加了一些中间层,来统一管理观察者的注册,和被观察者的事件发布。
观察者模式有点像IOC,IOC有一个名字叫控制反转,观察者通过将主动权上交给被观察者来降低系统消耗,实现一样的功能。这样的思路是很值得学习的。