假设我有一个复合类PharmaProduct
(代表制药公司的产品层次结构)和一个数据库表。我想到了两种将数据加载到PharmaProduct
对象的方法。
(1)在实例化对象时构造整个对象树。通过对树应用递归循环来对树进行更改并保留这些更改(这实际上是C#DataSet
的工作方式)。
(2)加载节点。仅在
时加载其他节点PharmaProduct GetParent()
或,
List<PharmaProduct> GetChldren()
调用(实际上直接访问数据库)。更改节点。只保存该节点。
这种类型的表可能有一千个条目,具体取决于制药公司生产的物品类型。所以在这种情况下,我认为第一种方法太笨拙(而且内存消耗)。
如果出现任何复合模式问题,我该如何实际进行数据库访问?
答案 0 :(得分:1)
看一下Proxy
模式。使用它,您可以在树中放置PharmaProductProxy
个与PharmaProduct
具有相同接口的对象,但在访问它们时会自行加载。