C#复合模式和数据库访问

时间:2009-10-19 12:35:42

标签: c# composite

假设我有一个复合类PharmaProduct(代表制药公司的产品层次结构)和一个数据库表。我想到了两种将数据加载到PharmaProduct对象的方法。

(1)在实例化对象时构造整个对象树。通过对树应用递归循环来对树进行更改并保留这些更改(这实际上是C#DataSet的工作方式)。

(2)加载节点。仅在

时加载其他节点
PharmaProduct GetParent()

或,

List<PharmaProduct> GetChldren()
调用

(实际上直接访问数据库)。更改节点。只保存该节点。

这种类型的表可能有一千个条目,具体取决于制药公司生产的物品类型。所以在这种情况下,我认为第一种方法太笨拙(而且内存消耗)。

如果出现任何复合模式问题,我该如何实际进行数据库访问?

1 个答案:

答案 0 :(得分:1)

看一下Proxy模式。使用它,您可以在树中放置PharmaProductProxy个与PharmaProduct具有相同接口的对象,但在访问它们时会自行加载。