能否在Java控制台应用程序中实现MVC模式?

9

我想用Java练习MVC,但首先我想创建一个简单的控制台应用程序,并将其分离成MVC。我知道可以将模型从控制台(视图+控制器)中分离出来,但在这种情况下,如何分离视图和控制器?


也许分离它的一种思路是考虑如何在一个网络上实现,其中模型在一台计算机上,视图在另一台计算机上,控制器连接两者。但是,是的,这是可以做到的。 - Hovercraft Full Of Eels
我仍然需要一个建议,如何在控制台应用程序中分离视图和控制器?有任何想法吗? - Vahid Hashemi
@austin powers:你试过我建议的吗? - Tudor
@austin powers:控制器被用来处理来自用户输入的事件,例如当你在控制台按下某个键或输入一些文本时。然后它会通知模型或视图相应地进行更改。 - Tudor
@austin powers:我已经编辑了我的答案。 - Tudor
显示剩余2条评论
3个回答

6

是的

MVC的整个概念是视图不重要。因此,基本上您可以使用MVC原则构建任何想要的应用程序。


3

你可以通过拥有一个处理用户控制台输入的类(控制器)和另一个处理在控制台输出模型的类(视图),来模仿这种行为。

虽然这不是MVC的真正用途,但如果你真的想这样做...

编辑:好的,我将给你一些关于控制器的具体想法。你知道,在GUI应用程序中,有所谓的“消息循环”。你需要在控制台应用程序中模仿这个。尝试启动一个并行线程,在无限循环中接收控制台输入。当接收到输入时,从控制器类调用一个处理程序方法。


-5

通常MVC架构纯粹是为企业大型应用程序而设计的。首先,您需要了解自己的需求,并且非常清楚在Java控制台中实现此MVC后您将实现什么目标。当您在小型应用程序中实施MVC时,您可能无法看到其优势和架构。如果您想感受它,可以选择像简单的登录页面这样的小型Web应用程序并进行一些处理。

如果我不正确,请纠正我。请给我您宝贵的建议……

谢谢


2
实际上我不同意。即使是小型应用程序,分离模型、视图和控制器的优点也是显而易见的。你的代码更清晰、更易于理解。在一个类/模块/程序中混合所有东西(GUI 渲染、事件处理和数据访问)会使你的代码难以维护。 - Matteo
@Matteo...谢谢你纠正我。但我的意思是,我们无法在小型控制台应用程序中清楚地“感受”它。 - Ravi Parmar
1
这是一种很好的方式,可以在创建和测试时逻辑上分离关注点,以便在这个更简单的控制台环境中调试和增强模型,然后再将其附加到更复杂的GUI或富互联网应用程序视图中。它还迫使您使用接口而不是类,并使用松散耦合 - 这两个都是很大的好处。 - Hovercraft Full Of Eels
2
MVC的起源来自GUI应用程序,源自Smalltalk(http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#History)。应用程序的规模与其无关,实现机制(GUI、web等)也不影响。 - Dave Newton
Matteo和Hovercraft,是的,使用MVC确实使开发更容易。我使用MVC为控制台编写了一个Connect4游戏;当我将其移植到Swing时,我不必重写所有内容。 - toto2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接