java MVC循环依赖
我需要视图保存对控制器的引用,因为它需要将控制器注册为事件侦听器。 我需要控制器来保存对视图的引用,因为在单击按钮时,我需要能够在列表中获取所选文件。 (我有一个文件列表和一个按钮“添加群集”,因此当单击该按钮时,我需要获取所选文件)
简言之,我有:
Controller controller(view);
View view(controller);
我肯定这里有一些不好的设计,我就是不知道如何避免
你可以在下面搜索框中键入要查询的问题!
我需要视图保存对控制器的引用,因为它需要将控制器注册为事件侦听器。 我需要控制器来保存对视图的引用,因为在单击按钮时,我需要能够在列表中获取所选文件。 (我有一个文件列表和一个按钮“添加群集”,因此当单击该按钮时,我需要获取所选文件)
简言之,我有:
Controller controller(view);
View view(controller);
我肯定这里有一些不好的设计,我就是不知道如何避免
# 1 楼答案
一种可能的解决办法:
addView(View view)
方法addController(Controller controller)
方法李># 2 楼答案
我相信您可以使用封装和延迟初始化过程。我确信,当控制器初始化时,您不需要同时使用视图,反之亦然。如果不是,您还可以结合bean的lazy init属性来回答上述问题
# 3 楼答案
创建四个部分: 1-控制 2-模型 三视图 4视图界面
第四部分是控制和视图之间的中间层。 初始化视图时,初始化IControl接口,如
将视图界面传递给要使用的控件。 当view want调用control时,就像说“嘿,control,做点什么吧,这是我的界面,以防您需要它。”
# 4 楼答案
要正确绑定视图和控制器,请右键单击*。aspx页面并选择“转到控制器”菜单。现在,在受尊重的控制器中添加一个具有以下语法的方法
其中viewname是您的视图的名称,例如。net这是不带aspx扩展名的页面的名称,此时您将右键单击视图并选择菜单“转到视图”,这将使您移动到受尊重的页面。这确认您的视图和控制器已绑定良好
# 5 楼答案
我不确定您使用的是什么Java技术,但在GWT应用程序中——并且使用MVP模式——不需要视图来引用控制器:控制器(或演示者)和视图之间的所有通信都是通过视图实现的接口进行的。在您的特定情况下,您的代码应该如下所示:
定义显示接口:
让视图实现该接口:
并在控制器中进行所有必要的绑定: