【发布时间】:2011-07-11 09:30:22
【问题描述】:
我正在“练习”中学习 MVC 模式,这意味着我正在尝试掌握如何在任何给定的 Java 应用程序中实现它。通过我刚刚问过的另一个question,我变得更聪明了,接下来是我的后续行动。
MVC 模式的内在特点是模型不应该知道视图和控制器。但是,控制器和视图都必须相互了解,因为控制器很可能需要更新视图,并且视图需要将用户操作发送给控制器。我知道通常使用策略模式来实现控制器,这意味着控制器是视图的行为。不管怎么看,view 和 controller 都是交织在一起的。
现在,我知道人们应该更喜欢组合而不是继承。但是,创建控制器继承视图的设计是否有意义。我主要考虑不必在视图上编写大量访问器和修改器方法,而是使用受保护的关键字定义所有组件,以便子类可以访问它们。
人们可能会想视图应该如何在用户输入发生时通知控制器。我的想法是让控制器中的每个按钮对应的动作。然后只需使用相应的按钮(在视图中)注册正确的操作(在控制器中,即子类中)。
我是否要模糊关注点分离?这仍然是 MVC 模式,还是我正在走向完全不同(甚至更糟)的东西?
欢迎所有反馈!
【问题讨论】:
-
你的目标是什么?您是否正在尝试开发自己的 MVC 框架?
-
我的目标是了解如何在我的应用程序中利用 MVC 模式。我确实从示例中了解到,理想情况下,组合是将控制器设置为视图的“行为”的方法。然而,让任何控制器扩展视图同样简单,这让我感到震惊。我承认它看起来很懒惰,但我认为它是一种节省时间和代码行的方法(这不就是模式的全部意义吗?)。毕竟,如果需要的话,只要让另一个人继承视图,就可以很容易地改变“行为”。
标签: java model-view-controller swing