问题可能会非常棘手(因为它的性质或描述它的方式),所以在回答之前真正阅读它。适用于没有数据层的桌面应用程序的MVC
我有这个应用程序来写:
a)桌面应用程序; b)从数据库,文件或任何其他存储库的意义上说没有数据层(不需要保存,存储或加载数据); c)应用程序将执行一些计算算法(遗传算法); b)提供GUI,它将显示应用程序和计算结果的控件。
我想使用MVC模式,但我怀疑如何使用它。由于(例如)数据库(根据用户输入在执行期间生成数据)我没有数据层,因此我担心在此实现中使用MVC的方式。到目前为止,我已经提出了两种方法:
GUI是视图。 GeneticAlgorithm是控制器。 GeneticAlgorithmResults是Model(作为只存储数据的类)。基本流程:
- 该视图发送用户输入到控制器;
- 控制器正在处理用户输入并生成数据;
- 控制器将生成的数据发送给模型;
- 模型通知有关新数据的视图;
- 视图拉取新数据并更新显示。
GUI是视图。 AppEngine是控制器。遗传算法和遗传算法结果是模型。现在我们有:
- 视图发送用户输入到控制器;
- 控制器正在处理用户输入并将控制信号发送到模型。
- 模型更新其内部状态(生成新数据);
- 该模型通知控制器有关新数据;
- 控制器将数据拉入模型;
- 控制器处理数据;
- 控制器将处理后的数据推送到视图;
- 视图更新显示。
第一种方法似乎更直接,更喜欢MVC。问题在于某些逻辑必须位于模型中 - 决定何时通知模型,因为并非所有的数据更新都会显示,或者显示会随着数据集更新,而不是每一个小小的变化。这些决定将基于用户输入。在实际显示之前可能还需要额外的数据处理。这将在视图中。
另一方面,第二种方法似乎更复杂,看起来像传递许多消息来实现任务。但它完全控制了控制器的逻辑,并分离了视图,控制器和模型(这是MVC的主要目的)的职责。
你会推荐哪种方法?或者,也许我应该混合使用第一种方法架构和第二种方法的通信流?或者一些不同的设计?