有哪些好的网站制作公司,苏州建材装修网站建设,常德做网站多少钱,四川外国语大学网站建设最近在看《设计模式》这本书#xff0c;发现对类之间的关系还没搞的很明白#xff0c;而类之间的关系对读书、阅读代码和代码设计都非常重要#xff0c;因此边看书边查阅了一些资料#xff0c;感觉有些理解了。下面是我的一些思考#xff0c;分享一下。
查阅了很多博客发现对类之间的关系还没搞的很明白而类之间的关系对读书、阅读代码和代码设计都非常重要因此边看书边查阅了一些资料感觉有些理解了。下面是我的一些思考分享一下。
查阅了很多博客类的关系一般就分为关联、依赖、组合、聚合和继承。继承关系很清楚这里不谈。
在《设计模式》中类图使用的OMT表示法而主流使用UML表示法两者关于类的关系的表示大部分是相同的只有一些小的区别然而正是这些“区别”让人醍醐灌顶。
1、关联关系看了很多资料都将关联关系与聚合、组合关系并列但实际上聚合、组合关系都应是关联关系的一种。而如果真的要区分的话可以这样理解关联关系范指聚合、组合关系之外的关联关系。 聚合与组合是一样的都是指类A中聚集了类B。聚合与组合的区别在于类A与类B两者的生命周期是否相同。如果类B与类A的生命周期相同则是组合反之就是聚合。 举个栗子汽车和轮子的关系汽车聚集了四个轮子两者的关系是聚合还是组合呢我认为这和我们的需求和设计有关。假设我们的需求是汽车对象消亡了轮子对象依然存在且可以用在其他汽车对象或飞机对象上此时两者的关系就是聚合。如果我们需求是汽车对象消亡了轮子对象也必须一同消亡汽车不存在轮子也就不存在了也就谈不上将轮子用到其他汽车上此时两者的关系就是组合。 因此组合是一种比聚合要更紧密的关系关联关系。两个对象不可能既是组合又是聚合。 对于关联关系怎么说呢很多资料里都写的是类A中有一个成员是类B虽然是一对一但本质上也是一种聚合或组合的关系。所以在一般情况下设计代码的、绘制类图的时候就要明确是聚合还是组合在UML中关联关系一般是指类A中有一个成员是类B这是一种单向的关联关系如果同时类B中有个成员是类A, 此时就是双向的关联关系。
2、依赖关系 依赖关系一般是指类A中的成员函数的形参是类B的引用或类A成员函数返回类B的引用。