0

我在设计一个读取文本文档并将统计信息写入文本文件的小程序时遇到了很多麻烦。我们必须使用我们还没有学过的模型-视图-控制器格式!

基本上,模型类表示来自文本文件的文本,我需要将其存储在字符串或字符串数​​组中。它还必须有方法来报告单词的数量和类似的东西。视图类需要有缓冲读取器和写入器。控件类创建对象并调用 printResults() 方法。

所以我从我的控制类开始,有类似的东西:

Model model = new Model();
View view = new View( model );

view.writeFile();

我有一种感觉,这是不正确的。如何让我的模型类表示一个文本文档,并将其发送到视图类以读取它,然后让视图类调用模型类中的方法来写入统计信息?有更好的方法还是我在这里遗漏了什么?

4

2 回答 2

0

您的模型非常有意义。您正在使用 View 类将数据移入和移出模型,我想这是合理的。通常,视图比这更直观。我认为视图将是一些显示文本文件的窗口。也许这可能是 GUI 的一部分,允许用户选择要打开的文件和我们正在保存的文件。

控制器通常是您的程序响应用户输入的地方。但是如果您不需要为这个项目构建 UI,那么您对“视图”和“控制器”的解释听起来不错。如果这个程序是用 Swing 编写的,那么你的控制器仍然会按照你描述的那样做。但它会响应用户单击保存按钮或文件打开按钮来执行这些操作。

如果您不熟悉 Model-View-Controller 设计模式,您可能应该阅读它。例如,请参阅Oracle 关于 MVC 的 technetwork 文章。

于 2012-09-13T17:00:12.240 回答
0
   How do I make my view and model classes aware of each other
 without having to declare a view object in the model class and
 a model object in the view class?

- 这是控制器的工作。通常,您会在 Controller 类中使用它们的“setter”和“getter”创建一个 Model 和 View 字段。然后在主程序类中,您将创建 View 和 Model 对象并将它们设置为 Controller 类的字段。这样,每次你想在 View 和 Model 之间传递数据时,你只需使用 Controller 中的相应字段调用每个方法的方法。

例如,假设您想将用户输入的数字加倍并显示它。在 Controller 对象的实现中,您调用 View 的方法来获取用户输入并将其作为参数传递给 Model 的方法。然后,您将返回的值或模型方法的数字加倍,并将其传递回视图或以任何所需方式显示结果的方法。

于 2014-04-21T15:12:18.153 回答