使用MVC范例的数据库应用程序

7

在经典的 Delphi 数据库应用程序中,我们有一个表单和一组数据感知的可视控件,通过 TDataSources 连接到 TDataSets。如果想使用 MVC 模型设计数据库应用程序,那么应该把 TDataSet 组件放在哪里?它们应该留在表单上,因此成为 View 的一部分吗?还是应该封装在某个 Model 对象内部?如果选择后者,它们如何绑定到可视化组件上?

2个回答

3
您可以通过MVC的视角来查看Delphi项目,就像这样:
TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View

如果你同意,那么你应该将DataSets放在Datamodule中。

在我正在开发的项目中,我还将TClientDataSets放在表单上并在创建时克隆数据。这样,我在TForm中有独立的数据,而在Datamodule中有逻辑。

很遗憾Delphi没有像ActiveRecord一样的框架。


+1 确实如此;Delphi 已经做了很长时间的 MVC,人们都忘记它可以 :-) - Jeroen Wiert Pluimers

2
我为我的客户制作了一个类似MVC的框架,对于你来说,可以做出这样的东西:
- TDatamodule = 模型(用于数据,因此包含TDataset等内容) - TForm = 视图(包含数据源,连接到模型的TDatasets) - Controller.pas = 控制器(执行/业务逻辑)
尽可能使您的表单保持清洁:只能包含GUI相关的内容。在控制器中实现特殊的(业务规则、数据更新等)逻辑。请记住:您的视图必须易于替换为另一个视图(如网页)。
在我的类似MVC的框架中,视图使用控制器的参数调用方法(如搜索、刷新等),控制器知道要搜索什么以及如何搜索等,并填充/更新模型。视图与模型相连(是控制器的属性)。 虽然不完全符合MVC的标准,但通过这种方式,GUI与所有类型的逻辑分离,而且容易进行调试和维护(您可以使用依赖注入/松耦合与控制器等,但这会增加难度,只有在需要时才使用)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接