Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC和JavaGUI监听器_Java_Model View Controller_User Interface_Listener - Fatal编程技术网

MVC和JavaGUI监听器

MVC和JavaGUI监听器,java,model-view-controller,user-interface,listener,Java,Model View Controller,User Interface,Listener,我想问,从设计模式的角度来看,将GUI的监听器放置在“视图”或“控制器”中是否更好。一位同事认为“视图”是最自然的地方,但我不太确定。如果你说的是Swing,那么Java中的MVC并不像模式所暗示的那样清晰和简单。那么,回答您的问题取决于您如何定义特定应用程序的“视图”和“控制器”,以及您所说的“放置侦听器”是什么意思 我认为监听器是控制器机制的一部分——它们在视图(显示当前状态)和模型(保持当前状态)之间提供了松散(ish)耦合,并为两者提供了交互方式。然而,大多数Swing监听器都与UI事件

我想问,从设计模式的角度来看,将GUI的监听器放置在“视图”或“控制器”中是否更好。一位同事认为“视图”是最自然的地方,但我不太确定。

如果你说的是Swing,那么Java中的MVC并不像模式所暗示的那样清晰和简单。那么,回答您的问题取决于您如何定义特定应用程序的“视图”和“控制器”,以及您所说的“放置侦听器”是什么意思

我认为监听器是控制器机制的一部分——它们在视图(显示当前状态)和模型(保持当前状态)之间提供了松散(ish)耦合,并为两者提供了交互方式。然而,大多数Swing监听器都与UI事件紧密关联——单击鼠标按钮、从列表中选择项目等等——因此您可能需要创建一个额外的抽象层,该层接受监听器捕获的这些UI事件,并将它们转换为应用程序域中更通用的内容。例如,EJB可以为某些业务逻辑提供公共接口,这些业务逻辑可能由Swing UI或通过web服务的API调用触发。然后,控制器是EJB,而触发对该EJB调用的Swing事件侦听器位于视图中