Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
Aggregation 聚合与合成的应用_Aggregation_Composition - Fatal编程技术网

Aggregation 聚合与合成的应用

Aggregation 聚合与合成的应用,aggregation,composition,Aggregation,Composition,好的,我理解合成和聚合 聚合是可以存在于“父”类之外的任何对象。合成意味着当父对象死亡时,它所包含的对象也会死亡 好的,我有一个测试应用程序。一个类别可以有视频。一个问题也可以有视频。一个类别由许多问题组成。我正试图找出最好的模式,因为两者都可以有视频,但可能不会共享相同的视频。但在某些情况下,他们可能会 对于测试用例,除了类别或问题对象之外,不会观看这些视频。所以我可以把他们都设计成制作视频的成员。我不确定这是不是一个好的设计。我可以在类别中组合它们,但通过一个方法将它们提供给问题对象。在这种

好的,我理解合成和聚合

聚合是可以存在于“父”类之外的任何对象。合成意味着当父对象死亡时,它所包含的对象也会死亡

好的,我有一个测试应用程序。一个类别可以有视频。一个问题也可以有视频。一个类别由许多问题组成。我正试图找出最好的模式,因为两者都可以有视频,但可能不会共享相同的视频。但在某些情况下,他们可能会

对于测试用例,除了类别或问题对象之外,不会观看这些视频。所以我可以把他们都设计成制作视频的成员。我不确定这是不是一个好的设计。我可以在类别中组合它们,但通过一个方法将它们提供给问题对象。在这种情况下,问题将是视频成员变量的兄弟,并将简单地使用它。这将是一个聚合。但是,并非所有视频都是分类视频,也并非所有视频都是问题视频。有时两者都可以

分类视频是指用户在考试前观看视频。因此,视频属于类别级别,而非问题级别

问题视频是一个人观看并回答有关问题的视频。在这个场景中,视频更像是一个你看到的人物,并尽你所能回答问题

在某些情况下,两者都可以

有更好的设计方法吗?传递视频似乎有很多耦合,这可能是不必要的


谢谢

您可以创建一个关联类,该类可以存储视频id、AssociationType=Category/Question/Both、AssociateID(列表)

在这种情况下,您不需要使用聚合或组合