1

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

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

(2) 加载一个节点。仅在以下情况下加载其他节点

PharmaProduct GetParent()

或者,

List<PharmaProduct> GetChldren()

被调用(实际上是直接访问数据库)。对节点进行更改。只保存那个节点。

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

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

4

1 回答 1

1

看看Proxy图案。使用它,您可以将PharmaProductProxy具有与 相同接口的对象放入树中PharmaProduct,但在访问它们时会延迟加载它们自己。

于 2009-10-19T12:42:28.680 回答