gpt4 book ai didi

c++ - View 和 Controller 之间接口(interface)的习惯用法

转载 作者:行者123 更新时间:2023-11-30 02:49:29 26 4
gpt4 key购买 nike

我有一个设计问题:

我正在使用 MVC 设计模式。但是 View 在我的项目中是 I/O 部分。这意味着向硬盘驱动器写入数据/从硬盘驱动器读取数据或在屏幕上打印内容的部分。

我提到过,“ View ”也应该执行读/写操作。我们的程序需要一些输入数据来执行所需的数值计算。由于此输入数据也应该是手动可编辑的,因此我们决定将此输入数据制作为 xml。

然后 Controller 要求“ View ”读取这个 xml 输入数据,以便填充模型。

这种情况看起来像这样:

                                  Controller
/ \
/ \
/ \
View Model
/ \
/ \
/ \
xml reader xml data

那么现在的问题是,在读取输入数据时,View 向 Controller 传递什么?

View 是否应该从模型中创建类的实例并用输入数据填充它们并将这些实例传递给 Controller ​​。

还是应该将枚举和 float 传递给 Controller ​​,以便他可以实例化所需的类并将 float 提供给构造函数?

哪种设计更好,为什么?

编辑:我们之所以认为 View 应该包含输入数据的加载(现在作为文件的 I/O 实现)是因为在未来的代码版本中,我们想要有一个图形用户界面,用户可以在其中点击'n'来构建输入数据。然后 View 获取完全相同的数据(但随后来自图形用户界面,而不是来自文件)并且应该将其传递给 Controller ​​。所以现在,它只是可能的最简单的“ View ”(当用户与 xml 交互时)。 这是对 MVC 的正确理解吗?

编辑 2:我们实现了一个数值方法,比如 FEM .所以模型包含两件事:一方面它包含数据(部分可以用 xml 表示),即有限元的表示等。另一方面,它包含逻辑,即偏微分方程,其参数也应存储在 xml 中。因此模型中的逻辑需要输入数据,而不是 View 。

如果需要提供更多信息,请随时询问。

非常感谢!

最佳答案

根据四人组的说法,如果我没记错的话,Model 类应该执行 IO 操作。View 是一种表示,允许用户或 Controller 对 Model 执行修改,但不应负责 IO 操作,因为这会通过暴露 Model 的内部表示而违反封装。

如果您需要像这样完成它,我仍然建议传递整个模型对象,因为这使 Controller 不知道内部表示;如果传递内部数据,所有 View 、 Controller 和模型都需要知道模型的内部结构,这使得模式的三个部分更加耦合;而使用它的目的是尽可能地解耦这三个部分,以实现更好的可维护性。

关于c++ - View 和 Controller 之间接口(interface)的习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com