使用观察者模式是否合适?

时间:2010-11-16 21:06:20

标签: java observer-pattern

支持我有一个严格保存实例字段的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()调用。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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