我想问一下,从设计模式的角度来看,在“视图”或“控制器”中为GUI设置监听器是否更好。一位同事认为“观点”是最自然的地方,但我不太确定。
答案 0 :(得分:2)
如果你正在谈论Swing,那么就像previously discussed一样,Java中的MVC并不像模式所暗示的那样简单明了。那么,要回答你的问题,取决于你如何定义关于特定应用程序的“视图”和“控制器”,以及“将听众”放在一个或另一个中的含义。
我认为监听器是控制器机制的一部分 - 它们在视图(显示当前状态)和模型(维护当前状态)之间提供松散(ish)耦合,并提供方法两者互动。但是,大多数Swing侦听器都非常紧密地绑定到UI事件 - 单击鼠标按钮,从列表中选择项目等等 - 因此您可能希望创建一个额外的抽象层来获取这些UI事件,这些事件由侦听器捕获,并将它们转换为更适合应用程序域的内容。例如,EJB可以为某些业务逻辑提供公共接口,这些接口可以由Swing UI或通过Web服务的API调用触发。然后,控制器是EJB,触发对该EJB的调用的Swing事件监听器位于视图中。