【发布时间】:2010-10-20 17:06:36
【问题描述】:
问题可能很棘手(因为它的性质或我描述它的方式),所以在回答之前请认真阅读。
我有这个应用要写:
a) 桌面应用程序;
b) 没有数据库、文件或任何其他存储库意义上的数据层(无需保存、存储或加载数据);
c) 应用程序将实现一些计算算法(遗传算法);
b) 提供 GUI,它将显示应用程序和计算结果的控件。
我正在考虑使用 MVC 模式,但我不知道如何使用它。由于我在(例如)数据库方面没有数据层(数据是在执行过程中根据用户输入生成的),因此我担心在此实现中使用 MVC 的方式。到目前为止,我想出了两种方法:
-
GUI 是视图。遗传算法是控制器。 GeneticAlgorithmResults 是模型(作为仅存储数据的类)。基本流程:
- 视图将用户输入发送到控制器;
- 控制器正在处理用户输入并生成数据;
- Controller 将生成的数据发送到 Model;
- 模型通知视图新数据;
- 视图拉取新数据并更新显示。
-
GUI 是视图。 AppEngine 是控制器。遗传算法和遗传算法结果是模型。现在我们有:
- 视图将用户输入发送到控制器;
- 控制器正在处理用户输入并向模型发送控制信号。
- 模型更新其内部状态(生成新数据);
- 模型通知控制器新数据;
- 控制器将数据拉入模型;
- 控制器处理数据;
- 控制器将处理后的数据推送到视图;
- 视图更新显示。
第一种方法似乎更直接,更像 MVC。问题是模型中必须有一些逻辑 - 决定何时通知模型,因为不会显示所有数据更新,或者可能会使用数据集而不是每一个微小的变化来更新显示。这些决定将基于用户输入。更重要的是,在实际显示之前可能需要对数据进行一些额外的处理。这将在视图中。
另一方面,第二种方法似乎更复杂,并且看起来要传递大量消息来完成任务。但是它将Logic的完全控制权交给了Controller,并将View、Controller和Model的职责分开(这是MVC的主要目的)。
您会推荐哪种方法?或者,也许我应该将它们混合使用并使用第一种方法架构和第二种方法的通信流?还是一些不同的设计?
【问题讨论】:
标签: model-view-controller architecture genetic-algorithm