我正在写一个应用程序,有各种形式和它们相应的数据模块。
我写道,他们通过在uses类中提到彼此(一个在实现中,另一个在接口中以避免交叉引用)来使用对方,这种方法是错误的吗?为什么或者为什么我不应该这样使用呢?
发布于 2010-11-23 23:22:31
我不得不同意Ldsandon的观点,我认为在你的项目中有多个数据模块会更好。如果你把它看作模型-视图-控制器,你的数据库就是模型,你的表单就是视图,你的数据模块就是控制器。
就我个人而言,我的项目中总是至少有两个数据模块。一个数据模块用于共享操作、ImageLists、DBConnection……以及整个项目中的其他东西。大多数情况下,这是我的主要数据模块。
从那时起,我为应用程序中的每个“实体”创建一个新的数据模块。例如,如果我的应用程序需要处理或显示订单、光标和产品,那么我将为每个人提供一个Datamodule。
通过这种方式,我可以清楚地分离功能,并轻松地重用零碎的内容,而不必引入所有内容。如果我需要一些与客户相关的东西,我只需使用客户数据模块就可以了。
致以敬意,
Stefaan
发布于 2010-11-24 00:32:40
这是可以的,特别是如果您要创建多个相同表单的实例,每个实例都使用相关数据模块的不同实例。
只需注意VCL设计中的一个小问题:如果您创建相同表单及其数据模块的两个实例,则这两个表单将指向相同的数据模块(由于VLC解析链接的方式),除非您在创建数据模块实例时使用一个小技巧:
if FDataModule = nil then
begin
FDataModule := TMyDataModule.Create(Self);
FDataModule.Name := ''; // That will avoid pointing to the same datamodule
end;发布于 2010-11-24 01:48:58
在镜面之外。我总是使用表单而不是DataModules。我知道这不是共同点。
我总是使用表单而不是DataModules。我叫他们DataMovules。
对于每组逻辑相关的表,我都使用一个这样的DataMovule。
我使用Forms而不是DataModules,因为DataModules和Forms都是组件容器,都可以有效地用作与数据相关的组件的容器。
开发过程中:
开发完成后:
我确实把
不,我没有体验到任何明显的应用程序大小或性能方面的损失。
我并不想打破MVC范式。相反,我试着坚持它。我不会将构成我的视图的表单和构成我的控制器的DataMovules混为一谈。我不认为它们是我观点的一部分。它们永远不会用作我的应用程序的用户界面。DataMovules恰好是表单。它们只是一些方便的工程产品。
https://stackoverflow.com/questions/4256853
复制相似问题