在经典的Delphi数据库应用程序中,我们有一个表单,一组通过TDataSources连接到TDataSets的数据感知可视控件。如果想要使用MVC模型设计数据库应用程序,在哪里放置TDataSet组件?他们应该保持形式,因此成为View的一部分吗?或者它们应该封装在一些Model对象中?如果后者如何绑定到可视组件?
答案 0 :(得分:3)
你可以通过MVC眼睛看到这样的delphi项目:
TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View
如果你接受它,那么你应该把DataSet放在Datamodule中。
在我正在开发的项目中,我还在表单上放置了TClientDataSets并在创建时克隆数据。这样我就可以在TForm中隔离数据,在数据模块中使用逻辑。
可惜没有类似delphi的ActiveRecord框架。
答案 1 :(得分:2)
我已经为我现在的客户制作了一个类似MVC的框架,对于你来说它会是这样的:
尽量保持表单尽可能干净:可能只包含GUI的内容。在控制器中实现特殊(业务规则,数据更新等)逻辑。请注意:您的视图必须能够轻松替换为其他视图(如网页)。
在类似MVC的框架中,视图使用控制器的参数调用方法(如搜索,刷新等),控制器知道搜索等的内容和方式以及填充/更新模型。视图与模型(控制器的属性)相关联 它不完全是MVC,但是这样GUI就可以与所有类型的逻辑分离,并且它仍然很容易调试和维护(你可以使用依赖注入/松散耦合与控制器等,但这使得它更加困难,仅在使用时需要)