【问题标题】:Is it appropriate to use the Observer Pattern?使用观察者模式合适吗?
【发布时间】:2010-11-16 21:06:19
【问题描述】:

支持我有一个严格保存实例字段的 Java Bean 类:

class College 
{
     building = "Burruss";
     dean = "Mr. Bergess";
     schools[] String = {"College of Engineering", "Business School"};
     valedictorian = "Mr. Smart Guy";
     ...
     ...
     ...
}

假设对于 College 实例的每次更改,都会发送一条消息:

class messageSender
{
       ... if (College values have changed)
              Send that instance's fields in byte[] form
}

假设我有一个 Swing GUI (Java),它还可以检查 College 中的更改

class myGUI
{
      ... if (College values have changed)
              Alert each individual JTextField the updated field
}

观察者模式在这里是否相关?如果大学有 1000 个变量,那么每次实例字段值更改时,我都必须包含一个“notifyObservers()”方法!

例如,对于这 1000 个变量,我有 1000 个 setter 方法。然后,每个 setter 方法都必须有一个 notifyObservers() 调用。

这是对的还是有更好的方法?

【问题讨论】:

    标签: java observer-pattern


    【解决方案1】:

    如果您有一个包含 1000 个字段的类,您可能还有其他更相关的设计问题。

    您的每个字段更改方法(setter)调用notifyObservers() 并没有异常。您可能想尝试尽可能多地封装状态和逻辑;信息隐藏只是很好的设计。

    【讨论】:

    • 请为具有 1000 个字段的类描述更多“相关设计问题”。一个严格用于保存数据的类是不安全的?
    • @Carlo:不,我相信 Java 可以处理它。即使是一个简单的 bean 也很少有这么多属性。这通常表明一些规范化或至少进一步划分为其他类是有用的。
    【解决方案2】:

    我认为 Observer 在这里还可以,但 Listener 更好,因为 1.可以创建几种类型的监听器 2. 当事件发生时,它被传递给监听器的处理方法,所以它可以知道真正发生了什么。例如,它可能包含 Mark 评论中提到的 1000 个字段之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多