Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 我应该如何组织课程集合_Oop_Class_Collections - Fatal编程技术网

Oop 我应该如何组织课程集合

Oop 我应该如何组织课程集合,oop,class,collections,Oop,Class,Collections,我有一系列的对象,每个对象都有与之相关的元数据。在典型情况下,我有一个表示对象和元数据的类,我可以将元数据作为对象的属性 +---------------+ +---------------+ | Object |--->| Meta_Data | +---------------+ +---------------+ 当我想要创建一个对象集合时,问题就出现了,每个对象都与元数据的特定实例相关联 +---------------+ +-------

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

+---------------+    +---------------+
|    Object     |--->|   Meta_Data   |
+---------------+    +---------------+
当我想要创建一个对象集合时,问题就出现了,每个对象都与元数据的特定实例相关联

+---------------+    +---------------+
|    Object     |--->|   Meta_Data   |
+---------------+    +---------------+
元数据需要能够访问自己的邻居:

+---------------+    +---------------+
|    Object     |--->|   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();
如果我只是创建一个对象集合(将元数据实例作为属性),那么元数据实例是孤立的,只能通过主对象进行交互。这似乎不太理想

+---------------+    +---------------+
|    Object     |--->|   Meta_Data   |
+---------------+    +---------------+
我能想到的唯一真正的替代方法是创建一些容器类,它允许我拥有:

+---------------+    +---------------+
|    Object     |--->|   Meta_Data   |
+---------------+    +---------------+
  • 包含对象实例集合的ObjectStack属性
  • 包含元数据实例集合的Meta_DataStack属性
  • 某种接口,将两者同步,以便我可以查询任何特定对象实例的相应元数据

  • 这似乎又是低效的。那么,对于可以逐项链接的对象集合,最好的方法是什么呢

    那么你所拥有的是这样的:

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