我有一系列对象,每个对象都有与之关联的元数据。在典型的情况下,我有一个表示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实例将被隔离,并且只能通过主对象进行交互。这似乎不太理想。
我能想到的唯一真正的替代方案是创建一些允许我拥有的容器类:
这似乎效率低下。那么,对于可以逐项链接的对象集合,最好的方法是什么?
答案 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);