java - 如何在java中实现相反的观察者模式?

标签 java design-patterns observer-pattern

在观察者模式中,观察者通常通过调用每个方法来通知监听者,例如:

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/

相关文章:

java - 为什么我不能将 ArrayList 直接添加到 Jlist 中?

java - 查询teradata以获取所有数据库的列表

java - 共享部分列表以避免复制

design-patterns - 服务和 DAO 与 MVC

ruby-on-rails - rails 观察者自定义回调

java - 使用 DOM 将 DTD 信息添加到 xml

c++ - 更通用的访问者模式

c# - 异常与临时类型。什么东西可能会倒下?

java - 针对特定领域的 MVC 观察者模式

c# - 您如何用初学者语言描述观察者模式?