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

时间:2010-04-11 08:12:33

标签: database delphi model-view-controller tdataset

在经典的Delphi数据库应用程序中,我们有一个表单,一组通过TDataSources连接到TDataSets的数据感知可视控件。如果想要使用MVC模型设计数据库应用程序,在哪里放置TDataSet组件?他们应该保持形式,因此成为View的一部分吗?或者它们应该封装在一些Model对象中?如果后者如何绑定到可视组件?

2 个答案:

答案 0 :(得分:3)

你可以通过MVC眼睛看到这样的delphi项目:

TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View

如果你接受它,那么你应该把DataSet放在Datamodule中。

在我正在开发的项目中,我还在表单上放置了TClientDataSets并在创建时克隆数据。这样我就可以在TForm中隔离数据,在数据模块中使用逻辑。

可惜没有类似delphi的ActiveRecord框架。

答案 1 :(得分:2)

我已经为我现在的客户制作了一个类似MVC的框架,对于你来说它会是这样的:

  • TDatamodule =模型(数据,所以TDataset的东西)
  • TForm = View(包含数据源,连接到模型的TDatasets)
  • Controller.pas = Controller(执行/业务逻辑)

尽量保持表单尽可能干净:可能只包含GUI的内容。在控制器中实现特殊(业务规则,数据更新等)逻辑。请注意:您的视图必须能够轻松替换为其他视图(如网页)。

在类似MVC的框架中,视图使用控制器的参数调用方法(如搜索,刷新等),控制器知道搜索等的内容和方式以及填充/更新模型。视图与模型(控制器的属性)相关联 它不完全是MVC,但是这样GUI就可以与所有类型的逻辑分离,并且它仍然很容易调试和维护(你可以使用依赖注入/松散耦合与控制器等,但这使得它更加困难,仅在使用时需要)