成分,聚合和DI

时间:2010-05-18 14:56:51

标签: inheritance composition aggregation

聚合:对象存在于另一个之外,在外部创建,因此它作为参数(例如)传递给construtor。例如:人 - 车。汽车是在不同的环境中创造的,而不是成为人的财产。

构图:对象仅存在,或仅在另一个内部有意义,作为另一个的一部分。例如:人 - 心。你不会创造一颗心,然后将它传递给一个人。

这是否意味着DI框架,聚合是首选和更常见的方法,并提高可测试性?

这是否也意味着在C#等语言中缺少多重继承可以通过使用聚合来缓解。我总是听到“组合与继承”相关的讨论。有这个原因吗?

1 个答案:

答案 0 :(得分:2)

委托提供了比继承更灵活的解决方案 - 有一篇名为why extends is evil的好文章解释了更多关于此的内容 - 但是哪个版本(无论是聚合还是合成)都是学术性的 - 您已经确定了差异,以及在您尝试实现的目标时使用的差异。但是,通过接口通常可以减少多重继承。