![]() |
1
11
MVC是一个有趣的抽象,但有一些问题。 实际上,控制器和视图经常是成对的——尽管理论上您应该能够替换其中一个而不替换另一个,但实际上,不同视图的接口机制是如此不同,以至于控制器和视图是组合在一起的。 我见过的有关Java的最好描述是视图是Swing组件,所以视图代码的一部分只是把这些组件放到屏幕上。 控制器是该类的其余部分、侦听器以及与视图交互的其余代码。 我的建议是不要太担心隔离视图和控制器,但也就是说,我完全落后于在模型和视图/控制器之间保持非常强的分离。 编辑/高级: 我使用了一种模式,其中控制器和视图是隔离的,而且它更灵活,但它往往要做更多的工作。我认为Struts使用绑定模型——如果您希望看到一些抽象技术,您可以在那里查看或搜索有关“绑定”Swing控件的内容。 |
![]() |
2
3
我不认为这个图表很好,可能会让事情变得更混乱。 控制器应负责将模型提供给视图。模型只应包含数据的简单访问器。任何与模型交互的需要——或者改变它的任何值——都应该通过控制器来实现。
这样,视图只需要知道如何向用户呈现/呈现模型。所以模型上的任何操作-比如
|
![]() |
3
2
|
![]() |
4
1
从我的角度来看,这是我第一次尝试在第一个桌面应用程序中分离模型、视图和控制器时遇到的问题。 对于Web应用程序,由于Web固有的特性,MVC模式非常自然地适合,但不幸的是,不可能将纯MVC模式适合桌面应用程序,在桌面应用程序中,操作系统在通知中扮演着固有的角色。这通常会导致如图中所示的模式被实现。 但是,您所展示的模式确实需要像这样实现,我想(我在与Java发生了短暂的事件之后切换到.NET),所以请记住这一点:
同时,控制器将负责接收用户操作。因此,如果有一个按钮显示“切换收藏夹”,这将导致控制器调用_model.showorhideFavoritesList()。模型将更新自身,并要求视图使用其新状态刷新自身。 现在视图将不再依赖于控制器。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 5 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 5 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 5 月前 |
![]() |
rudraraj · java中未声明最终变量 6 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 6 月前 |