在经典的 Delphi 数据库应用程序中,我们有一个表单,一组通过 TDataSources 连接到 TDataSets 的数据感知可视控件。如果想使用 MVC 模型设计数据库应用程序,TDataSet 组件应该放在哪里?他们是否应该保持状态并因此成为 View 的一部分?还是应该将它们封装在某个模型对象中?如果是后者,它们如何绑定到视觉组件?
问问题
1384 次
2 回答
3
你可以通过 MVC 的眼睛看到 delphi 项目,如下所示:
TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View
如果您接受它,那么您应该将 DataSets 放在 Datamodule 中。
在我正在处理的项目中,我还将 TClientDataSets 放在表单上,并在创建时克隆数据。这样我就可以在 TForm 中隔离数据,并在数据模块中使用逻辑。
遗憾的是,delphi 没有类似 ActiveRecord 的框架。
于 2010-04-11T08:44:06.270 回答
2
我为我当前的客户制作了一个类似 MVC 的框架,对你来说它会是这样的:
- TDatamodule = 模型(用于数据,所以 TDataset 的东西)
- TForm = View(包含数据源,连接到模型的 TDatasets)
- Controller.pas = Controller(执行/业务逻辑)
尽量让你的表单保持干净:可能只包含 GUI 的东西。在控制器中实现特殊的(业务规则、数据更新等)逻辑。请记住:您的视图必须很容易被另一个视图(如网页)替换。
在我的类似 MVC 的框架中,视图使用控制器的参数调用方法(如搜索、刷新等),控制器知道搜索什么以及如何搜索等,并填充/更新模型。视图与模型(控制器的属性)相连。
它不完全是 MVC,但这种方式 GUI 与各种逻辑分离,并且仍然易于调试和维护(您可以使用依赖注入/与控制器松散耦合等,但这会使其更加困难,仅在以下情况下使用需要)
于 2010-04-12T06:53:13.803 回答