命令行java中的MVC [关闭]

Posted

技术标签:

【中文标题】命令行java中的MVC [关闭]【英文标题】:MVC in command line java [closed] 【发布时间】:2011-10-29 08:01:05 【问题描述】:

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

到目前为止(显然没有 MVC)我有:

MainClass(显然是假名),使用 Menu 几次的音柱会创建一个 System 对象 菜单(主要用于显示选项) 系统,它有一个模型作为属性,使用文件或键盘输入创建,它使用模型中的数据执行简单的操作。模型的属性范围 模型(某种)是我拥有的数据的容器。

有人可以给我推荐一个合适的课程结构吗?

非常感谢, 卢克

【问题讨论】:

什么意思?什么MVC类库?什么样的用户界面? 我的意思是模式ModelViewController @Luke 我可以在这里看到人们的困惑。当您处理命令行界面时,对于 MVC 交互没有什么可做的。您的视图几乎已经被抽象出来了(它是您用来运行程序的系统控制台。)您的控制器只是模型和视图的中间人。在典型的初学者 CLI 程序中,这就是 System.out.println。所以几乎你所要做的就是解析System.in 并打印到System.out。这并不意味着没有教训可供学习。 .. 继续......尽可能少地调用你的“逻辑类”。在理想状态下,它将对逻辑类进行一次调用,获得结果并对其进行格式化。如果你能做到这一点,你就有了一个很好的模型,可以很容易地从 CLI 升级到 GUI。事实上,我经常在使用 GUI 之前为我的模型编写 CLI,其唯一目的是确保它们完全分离。 这个问题真的不应该被关闭。投票决定重新开放。 【参考方案1】:

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

MVC 所说的只是,给定一个应用程序,您可以从应用程序的真实内部逻辑中尽可能多地抽象视图部分——应用程序的表示,用户所看到和与之交互的内容。这样做的方法是创建控制器,将视图和其中存在的任何控件“粘合”到后端的逻辑。简而言之,控制器将用户输入转换为方法调用,并将返回值转换回对用户有用的内容。模式的模型部分有些争议。有人说,发送到视图进行显示的每一个单独的对象图都是一个“模型”。其他人则认为,存在于后端的整个有状态对象图是“模型”,控制器形成了某种镜子,让视图可以挑选、检查和修改模型。问题实际上是是否有许多模型不断来回流动,或者一个需要以用户可以理解的方式展示的大型模型。

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

【讨论】:

以上是关于命令行java中的MVC [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

优雅关闭 Java 命令行程序的最佳方法

java命令行参数的默认访问修饰符是啥[关闭]

是否有有助于构建命令行应用程序的良好 Java 库? [关闭]

升级后 HSQLDB 命令行关闭不再起作用

Visual Studio 中的命令行 - 如何关闭弹出窗口?

从命令行启用/禁用 Windows 10 中的设备 [关闭]