MVC在命令行java中

时间:2011-08-17 22:11:07

标签: java model-view-controller command-line-interface

我正在尝试在命令行项目中获取MVC。

截至目前(显然没有MVC)我有:

  • MainClass(显然是假名),使用Menu几次创建一个System对象
  • 菜单(由主要用于显示选项)
  • 系统,它有一个Model作为属性,用文件或键盘输入创建,它使用Model中的数据执行一个简单的操作.calculate(valueA,valueB),其中valueA和valueB是使用菜单从属于模型的属性
  • 模型(种类)是我拥有的数据的容器。

有人可以建议我一个合适的课程结构吗?

非常感谢, 路加

1 个答案:

答案 0 :(得分:16)

我对这个问题的负面反应感到非常惊讶,因为这是一个相当有趣的问题。我希望这是因为大多数人认为MVC在Web环境中只有任何意义,但MVC也完全适用于CLI程序。它只是呈现了一种不同的视角。事实上,我认为它是最高级的MVC设计,能够插入CLI,GUI或Web“视图”,而无需对控制器和模型进行任何更改。

MVC所说的是,在给定应用程序的情况下,您可以从应用程序的真实内部逻辑中尽可能多地抽象视图部分 - 应用程序的呈现,用户看到和交互的内容。你这样做的方法是创建控制器,将视图及其中存在的任何控件“粘合”到后端的逻辑上。简而言之,控制器将用户输入转换为方法调用,并将返回值转换回对用户有用的内容。模式的模型部分有点争论。有人说,发送到视图进行显示的每个独立的对象图是 a “model”。其他人认为,生活在后端的整个有状态对象图是 “模型”,控制器形成了一个可以让视图挑选,检查和修改特定部分的镜像。模型。问题在于是否有许多模型不断地来回流动,或者是一个需要以用户能够理解的方式暴露的大型模型。

要在CLI(或任何类型的应用程序)中访问MVC,请将部分代码明确定义为视图/演示文稿。它永远不应该有任何与业务逻辑相似的东西。您的控制器应该是知道如何响应用户输入的对象,并且可以将内容发回以供查看,但不会对这些内容的显示方式或输入将采用的确切内容进行任何假设。模型,无论如何,基本上是用户关心的实际数据或“东西”,它应该忘记显示它的视图或控制器......控制它。