我该如何组织一个类集合

时间:2011-03-22 04:09:12

标签: oop class collections

我有一系列对象,每个对象都有与之关联的元数据。在典型的情况下,我有一个表示Object和Meta_Data的类,我可以将Meta_Data作为Object的一个属性。

+---------------+    +---------------+
|    Object     |--->|   Meta_Data   |
+---------------+    +---------------+

当我想创建一个对象集合时,问题就出现了,每个对象都与一个特定的Meta_Data实例相关联。

Meta_Data需要能够访问自己的邻居:

a[0] = Object();
a[1] = Object();

// a[0].meta needs to be able to interact with a[1].meta
a[0].meta = Meta_Data();
a[1].meta = Meta_Data();

如果我只创建一个对象集合(将Meta_Data实例作为属性),则Meta_Data实例将被隔离,并且只能通过主对象进行交互。这似乎不太理想。

我能想到的唯一真正的替代方案是创建一些允许我拥有的容器类:

  1. 包含Object实例集合的ObjectStack属性
  2. 包含Meta_Data实例集合的Meta_DataStack属性
  3. 某种与两者同步的界面,以便我可以查询任何特定Object实例的相应元数据。
  4. 这似乎效率低下。那么,对于可以逐项链接的对象集合,最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

你拥有的是这样的:

[Object]--->[MetaData]<--+
                |        |
                +--------+

需要负责连接MetaData对象,它不能是任何一个特定的Object对象。你需要一种能够将所有东西放在一起的工厂或生成器。

这并不意味着Factory需要维护对存在的两个类的每个实例的引用,它只需要建立连接。

Object a = new Object();
Object b = new Object();
MetaData ma = new MetaData();
MetaData mb = new MetaData();

ma.setFriend(mb);
a.setMetaData(ma);
b.setMetaData(mb);