我在设计一个读取文本文档并将统计信息写入文本文件的小程序时遇到了很多麻烦。我们必须使用尚未学习的模型 - 视图 - 控制器格式!
基本上,模型类表示文本文件中的文本,我需要它存储在String或String数组中。它还必须有方法来报告单词的数量和类似的东西。视图类需要有bufferedreader和writer。控件类创建对象并调用printResults()方法。
所以我开始使用我的控件类:
Model model = new Model();
View view = new View( model );
view.writeFile();
我觉得这是不正确的。如何让我的模型类表示一个文本文档,并将其发送到View类来读取它,然后让视图类调用模型类中的方法来编写统计信息?有没有更好的方法或者我在这里缺少什么?
答案 0 :(得分:0)
你的模型非常有意义。您正在使用View类将数据移入和移出模型,我想这是合理的。 通常情况下,视图比视觉更直观。我认为View将是显示文本文件的窗口。也许这可能是GUI的一部分,允许用户选择要打开的文件和我们正在保存的文件。
Controller通常是程序响应用户输入的地方。但是,如果您不需要为此项目构建UI,那么您对“视图”和“控制器”的解释听起来不错。如果这个程序是用Swing编写的,那么你的Controller仍然会按你所描述的那样编写。但它会响应用户点击保存按钮或文件打开按钮来执行这些操作。
如果是新手,您应该阅读有关模型 - 视图 - 控制器设计模式的一些内容。例如,请参阅Oracle's technetwork article on MVC.
答案 1 :(得分: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类及其设置者'和' getters'。然后在主程序类中创建View和Model对象并将它们设置为Controller类的字段。这样,每次要在View和Model之间中继数据时,只需使用Controllers中的相应字段调用每个方法。
例如,假设您想要将用户输入的数字加倍并显示它。在Controller对象的实现中,您调用View的方法来获取用户输入并将其作为参数传递给Model的方法。然后,为模型方法分配返回值或加倍数,并将其传递回View或以任何方式显示结果的方法。