2011-01-29 131 views
3

我想问一个问题,从设计模式的角度来看,是不是应该把“视图”或“控制器”中的监听器放置在GUI中。一位同事认为,“观点”是最自然的地方,但我不太确定。MVC和Java GUI监听器

回答

2

如果你正在谈论Swing,那么,作为previouslydiscussed,Java中的MVC并不是一个清晰和简单的模式所暗示的。那么,要回答你的问题,取决于你如何定义关于特定应用程序的“视图”和“控制器”,以及你将“放置听众”放在一个或另一个中的含义。

我认为侦听器是控制器机制的一部分 - 它们在视图(显示当前状态)和模型(维护当前状态)之间提供松散(ish)耦合,并提供一种方式为这两个人互动。然而,大多数Swing监听器与UI事件紧密相关 - 单击鼠标按钮,从列表中选择项目等等 - - 因此您可能希望创建一个额外的抽象层,它接受这些UI事件,这些事件由侦听器捕获,并将它们转换为更一般的应用程序域。例如,一个EJB可以为可能由Swing UI或通过Web服务调用API触发的某些业务逻辑提供通用接口。那么控制器就是EJB,触发对该EJB的调用的Swing事件侦听器处于视图中。