使用观察者模式是否合适?
问题描述:
支持我有严格的保存实例字段一个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()
的。尽管你可能想尝试封装尽可能多的状态和逻辑;信息隐藏只是很好的设计。
答
我认为,观察即可在这里,但监听器更好,因为 1.当事件发生时它被传递到听者的处理方法,你可以创建多种类型的听众 2的,所以它可以知道到底发生了什么。例如,它可能包含Mark的评论中提到的1000个字段之一。
请为1000字段的课程描述更多的“相关设计问题”。严格保存数据的类是不安全的? – 2010-11-16 21:18:39
@卡罗:不,我有信心Java可以处理它。即使是简单的bean也应该拥有这么多的属性,这是非常罕见的。这通常表明一些规范化或至少进一步划分到其他类中将会有用。 – 2010-11-16 21:21:46