https://www.processon.com/view/58ddba55e4b02c6ef40e11d0?fromnew=1 在这里看见一副headFirst设计模式图,设计的很好,分享一下。观察者模式部分截图如下。
观察者模式是一种行为型模式。在观察者模式中,一种叫作被观察者的对象维护了观察者对象的集合。当被观察者对象变化时,它会通知观察者。在被观察者对象所维护的观察者集合中能够添加或删除观察者。被观察者的状态变化能够传递给观察这,这样观察者能够根据被观察者的状态变化做出相应的变化。
观察者模式主要用于解决对象之间一对多的关系,当一个对象改变时,会告知许多关联对象。
观察者模式UML图
被观察者(听众)会提供一个带有特定方法的接口,用于在被观察者所维护的观察者对象集合中添加和移除观察者。该接口还有一个通知方法。这种方法用于在对象的状态改变时调用。这会通知观察者被观察者的状态发上了改变。
观察者也有一个接口,其中提供了一个更新观察者的方法。此更新方法用于在被观察者的通知方法中对各个观察者进行调用。由于这种交互是通过一个接口,任何具体实现了观察者接口的观察者都能够向被观察者进行更新。其结果就是实现了被观察者和观察者质检的松耦合。