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

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

问题描述:

支持我有严格的保存实例字段一个Java Bean类:使用观察者模式是否合适?

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

假设对于在大学的一个实例的每一个变化,则发送一条消息:

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

假设我有一个Swing图形用户界面(Java),也检查学院的变化

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

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

例如,对于那些1000个变量,我有1000种setter方法。每个setter方法都必须具有notifyObservers()调用。

这是正确的或者是有没有更好的办法?

如果你有1000场的一类,你可能有其他的,更有针对性的设计问题。

这是不正常的每个领域,改变方法(setter方法)来调用notifyObservers()的。尽管你可能想尝试封装尽可能多的状态和逻辑;信息隐藏只是很好的设计。

+0

请为1000字段的课程描述更多的“相关设计问题”。严格保存数据的类是不安全的? – 2010-11-16 21:18:39

+1

@卡罗:不,我有信心Java可以处理它。即使是简单的bean也应该拥有这么多的属性,这是非常罕见的。这通常表明一些规范化或至少进一步划分到其他类中将会有用。 – 2010-11-16 21:21:46

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