在观察者模式中,观察者通常通过调用每个方法来通知监听者,例如:
OnSomethingUpdated(Object) {
....
在这种情况下我们有耦合:Observer 应该对每个 listener 进行一些操作。 当我想通过继承修改 Observer 或 Listener 或尝试提取抽象父类(super class)以简化 Observer(或 Listener)的逻辑时,它很难传播消息,我收到意大利面条代码。 我认为应该存在某种方式来将 Observer 工作的业务逻辑与将消息传播给听众的逻辑分离。相反可能更好——听众应该检查一些消息。 是否存在类似的模式? 谢谢。
最佳答案
监听器实际上应该是一个接口(interface):
interface MyListener {
void onSomethingUpdated(Object eventData);
}
这样,主体与其观察者的具体实例分离;它应该保留这些接口(interface)引用的列表。
看看here了解如何在 Java 中实现此模式。
现在,为了进一步将主题与消息传播分离,我建议您看一下 mediator模式。
关于java - 如何在java中实现相反的观察者模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166587/