Dat*_*aki 11 java model-view-controller swing design-patterns decoupling
我们正在制作一个相当大的Swing应用程序,它必须实现MVC模式.该应用程序目前看起来像这样:
有很多观点.它们以分层方式创建,其中一个主视图包含(并创建)多个视图,这些视图都包含它们自己的子视图集等.每个视图通过调用模型从模型独立地从其他视图中检索信息必要时的静态方法.
还有不少控制器都完全相互分离.每个控制器都属于一个视图.每个视图都创建自己的控制器,并将控制器添加为用户输入的侦听器.控制器从视图接收事件,然后通过模型静态方法修改模型.当视图调度不影响模型但仅影响视图的事件时,视图会自行处理这些事件 - 而不通知控制器事件.也就是说,控制器完全不知道视图,控制器的目的只是处理模型的操作.| 编辑:控制器目前是他们观点的附件; 它们只包含事件处理的逻辑.也就是说,控制器本身不是组件,并且不包含组件.它们的实现方式与以下示例相同:MVC示例 |
应用程序中的模型非常被动,甚至没有侦听器(它代表数据库).它从控制器接收更新.
在此示例中,视图拥有控制器.如果控制器拥有并创建视图,并且如果让视图不知道控制器而不是相反的情况,那么在一般情况下会更好吗?在那种情况下,为什么?这将如何设计?如果没有,是否有更好的设计,控制器仍然没有意识到这些观点?或者,也许是他们中最好的设计?
编辑:
"视图负责建立这种相互通信......"似乎表明视图创建了控制器,或者至少具有对控制器的初始引用,反之亦然.
所以这至少是一种可行的方法(它是一种有效的MVC模式),但主要问题仍然存在; 哪个更好,最好的设计会是怎样的?特别是在处理与其各自视图密切相关的许多控制器时?