在讨论聚合,关联,组合区别,讨论那么多内部类干什么?
确实,他们的关系按强弱分有
关联<聚合<组合
我看大家主要分岐在聚合和组合上。说白一点,聚合这种关系是被包含的对象的个数是 0..* 而组合是 1..*
聚合中的被包含对象可以没有。 而组合至少有一个。聚合是一种拥有的关系,而组合是整体与部分的关系
举一个简单的例子:
一个图书馆可以有十万本书,也可以一本也没有。但空的图书馆还是图书馆。这是聚合
一个车(我们平常能看到的普通的交通工具车)有轮子,有的车是四轮子的,有的车是三轮的,自行车是二轮的,还有独轮车,但车至少要有一个轮子,不然就不是车。这是组合关系。
再补充一点。聚合关系中,主对象的存在不依赖于次对象(被包含对象),也就是说书没有了,但图书馆仍然存在。不取决于书是否存在。
但轮子没有了,车就没有了。 也就是部分消失了,整体也就消失了
关联在领域建模中经常使用到。
依赖则在Service设计中经常用到。
使用设计模式用得比较多的是接口和实现,设计模式很少涉及到继承;但是很多设计模式用出的效果是和继承相竞争的。
刚学习OO的人喜欢用继承,其实继承是有害的,可以说是一种迫不得已的使用,就象if else一样的,我们可以使用设计模式来达到继承的效果。
|
在合成关系中,Part的对象任何时候只能从属于一个Whole对象, 这个约束
是一个设计上无形要求。
个人感觉这种细微区别在现在域建模驱动设计中用处不太大。