我正在编写一个应用程序,有各种形式及其对应的数据模块。
我写的方式是通过在使用类中提到它们相互使用(一个在实现中,另一个在接口中以避免交叉引用)这种方法是错误的吗?为什么或为什么不我应该以这种方式使用?
4 回答
我必须同意 Ldsandon 的观点,恕我直言,在您的项目中拥有多个数据模块会更好。如果您将其视为模型 - 视图 - 控制器事物,那么您的数据库就是模型,您的表单将是视图,您的数据模块将是控制器。
就我个人而言,我的项目中总是至少有 2 个数据模块。一个数据模块用于在整个项目中共享 Actions、ImageLists、DBConnection 等。大多数时候这是我的主要数据模块。
从那里我为我的应用程序中的每个“实体”创建一个新的数据模块。例如,如果我的应用程序需要处理或显示订单、光标和产品,那么我将为每个人提供一个数据模块。
通过这种方式,我可以清楚地分离功能并轻松地重用零碎的东西,而无需拉入所有内容。如果我需要与客户相关的东西,我只需使用客户数据模块就可以了。
问候,
斯特凡
It is ok, especially if you're going to create more than one instance of the same form each using a different instance of the related datamodule.
Just be aware of a little issue in the VCL design: if you create two instances of the same form and their datamodules, both forms will point to the same datamodule (due the way the VLC resolves links) unless you use a little trick when creating the datamodule instance:
if FDataModule = nil then
begin
FDataModule := TMyDataModule.Create(Self);
FDataModule.Name := ''; // That will avoid pointing to the same datamodule
end;
超越镜子。我总是使用 Forms 而不是 DataModules。我知道这不是共同点。
我总是使用 Forms 而不是 DataModules。我称它们为 DataMovules。
我为每组逻辑相关的表使用一个这样的 DataMovule。
我使用 Forms 而不是 DataModules,因为 DataModules 和 Forms 都是组件容器,并且两者都可以有效地用作数据相关组件的容器。
开发过程中:
- 我的应用程序更容易开发。表单让您有机会查看数据组件,从而轻松开发这些组件。
- 我的应用程序更容易调试,因为您可以立即放置一些查看器组件,以便您可以实际看到数据。我通常创建一个标签架,每个表格一页,每页有一个数据网格,用于浏览表格上的数据。
- 我的应用程序更容易测试,因为您最终可能会操纵数据,例如使用极端值进行压力测试。
开发后:
我确实使形式不可见。实际上,将它变成一个 DataModule,我享受与数据模块相同的容器功能。
但有奖金。该表格仍然存在,因此我最终可以将其变为可见,以便确定问题。我为此使用了关于框。
不,我没有在应用程序大小或性能方面遇到任何明显的损失。
我不会试图打破 MVC 范式。我试着坚持下去。我不会将构成我的视图的表单与构成我的控制器的 DataMovules 混合在一起。我不认为它们是我观点的一部分。它们永远不会用作我的应用程序的用户界面。DataMovules 恰好是表单。它们只是方便的工程工件。
仅用于表对象的数据模块,如果您只有几个 db 表,那么成为第一个是一个不错的选择。
另一个仅用于您的操作的数据模块。
仅用于图像列表的数据模块是另一个很好的第三数据模块。此数据模块仅包含图像列表,然后您需要访问图像列表的表单可以从该共享位置全部使用它们。
如果您有 200 个表对象,那么可能不止一个数据模块仅用于 db 表。想象一个应用程序有 20 个与发票相关的表,以及另外 20 个与 HR 相关的表。我认为如果 InvoicingDataModule 和 HRDataModule 中的表以及对它们起作用的代码不需要相互了解任何信息,或者即使一个模块具有“使用”依赖关系,那么将它们分开会很好在一个方向上,但这种关系不是循环的。即使这样,更细粒度的数据模块模块化也可能是有益的。