今天看了两篇设计模式相关的博客,但是关于UML图的关系甚是混乱,搜之,得此文:
原文:http://blog.csdn.net/dylgsy/article/details/1076044
文章结束关于网友的讨论也有借鉴之处:
1,对象(或类)间的关系就两种:引用和继承。 其他关系都是在这两种基础上演化而成。
2,实心菱形我们这里叫强聚合,比如说建一个房子类,里面一定包括门,窗等,而桌子板凳可有可无,门窗这些就用强聚合(实心菱形)表示,桌子板凳就是空心地。所以空心菱形应该用指针,值为实心。
3,其实这些关系不应该从代码去区分,上面很多提到了语义的概念,其实UML里的很多概念应该从语义去区分。聚合是一种“整体-部分”概念,而关联是一种关系的概念。
老公和老婆是一种关联,他们的关系是夫妻关系;
身体和手、汽车和轮胎呈现一种“整体-部分”的概念。
4,聚合/组合 的区分:
两者都表示 整体-部分 的关系。
但 聚合 的 整体-部分 是可分离的, 如 停车场-汽车
而 组合 的 整体-部分 是不可分离的,两者的生命周期相同,唇齿相依,唇亡齿寒