gpt4 book ai didi

forms - 数据库组件或新组件的视觉继承?

转载 作者:行者123 更新时间:2023-12-03 18:41:48 25 4
gpt4 key购买 nike

我有 3 个不同的 DataModule:ADOModule、SDACModule、AstaModule。所有都是相同的,除了它们使用的 DB 组件:ADO、SDAC、Asta。

所有这些 DataModule 都做同样的工作,但通过不同的组件。我的意思是 - 所有内部选择和执行都是相同的。

我搜索的是:一种将所有这些 DataModule 组合到一个 BaseDataModule 并强制 ADOModule、SDACModule 和 AstaModule 中的每一个从 BaseDataModule 继承的方法。

好吧,我发现继承方法和属性很容易,但我从来没有习惯从组件继承。有什么好的方法吗?项目目标:尽量减少编码和复制粘贴。

最佳答案

请允许我建议一条不同的路径。我建议您编写所有基于 TClientDataset 的 DataModules而是任何其他特定的数据集。添加所有需要的属性和方法,始终使用 TClientDataset实例。

然后创建一个数据访问服务接口(interface),比如说IDataProvider ,它提供了选择数据和执行 SQL 语句的方法。 select 方法将接收查询文本并返回 OleVariant这将保存所有找到的记录(内部 DataTClientDataset 属性)。这个OleVariant , 当分配给 Data TClientDataset 的属性(property)DataModule 上的实例将填充它。

最后,将实现类写入IDataProvider .这些类将取决于您需要支持的特定数据访问技术。

这种架构将使您的应用程序完全独立于数据访问方法。将来,如果您需要第四种方法来获取数据,您只需添加 IDataProvider 的新实现即可。其余的将继续工作。

如果您将这些实现类放在单独的包中,您将能够动态地设置您的应用程序以使用不同的数据访问方法,通过动态加载这些包,甚至无需重新编译您的应用程序。想想那是多么美好!

关于forms - 数据库组件或新组件的视觉继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com