将TDataSource创建为数据绑定(bind)组件和实际基础TDataSet之间的中介的背后原因是(或将是)什么原因,而不是让这些组件直接直接连接到TDataSets本身?

这似乎是一个愚蠢的问题,但是我正在研究各种各样的“数据查看器”组件,这些组件链接到常见的“数据连接器”组件,等等。在设计这组组件时,我发现自己引用了经典的Delphi“TDataSet-> TDataSource-> Data-bound-component”设置的结构作为指导。但是,在我的组件集中,我一直希望将“TDataSource”和“TDataSet”等效项的功能本质上合并到一个类中。让我想知道首先分离它们的原因是什么。

最佳答案

这一切都与decouplingindirection有关。

有了TDataSource,它们有两种:

  • 解耦主详细信息关系(TDataSource与要绑定(bind)的TDataSet在同一模块中;详细信息TDataSet通过将其MasterSource属性指向指向主TDataSet的TDataSource来引用主TDataSet)
  • 将UI与业务层分离(TDataSet位于DataModule中; TDataSource位于包含您的UI控件的Form/Frame上,UI控件引用其DataSource属性)。

  • 由于许多组件可以指向同一个数据源,因此您只需翻转一个TDataSource.DataSet属性即可快速切换它们使用的基础TDataSet。

    10-05 22:40