欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 设计模式总结

设计模式总结

2024/10/25 11:36:06 来源:https://blog.csdn.net/weixin_43892514/article/details/143098985  浏览:    关键词:设计模式总结

文章目录

        • UML类图
          • 泛化(Generalization):
          • 实现(Realization):
          • 组合(Composition):
          • 聚合(Aggregation):
          • 关联(Association):
          • 依赖(Dependency):

UML类图

https://blog.csdn.net/wsyw126/article/details/51352249
https://design-patterns.readthedocs.io/zh-cn/latest/index.html
https://www.cnblogs.com/duanxz/archive/2012/06/13/2547801.html

在这里插入图片描述

1、它们关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖
泛化、实现:箭头指向父类
聚合、组合:箭头指向整体,拥有者
关联、依赖:箭头指向被使用者

2、关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。

3. 其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。
而关联与依赖的关系用一句话概括下来就是,依赖描述了对象之间的调用关系,而关联描述了对象之间的结构关系。

泛化(Generalization):

泛化是对象之间耦合度最大的关系之一。它表示的是继承关系。比如:son类继承Father类。

UML类图使用带三角的实线表示,由子类指向父类。

实现(Realization):

实现是另外一个对象之间耦合度最大的关系之一。它表示的是接口和实现类的关系。比如:ImplementsClass类实现Interface类。

UML类图使用带三角的虚线表示,由子类指向父类。

组合(Composition):

组合是次于前两者的关系,它表示的是整体和部分的关系。比如人和手的关系,当人不在了,手也就没了。

UML类图使用用实心菱形+实线+箭头图示表示,菱形的一边指的的拥有者ClassA,实线所在的一边为被拥有者ClassB。

聚合(Aggregation):

聚合是次于组合的关系,它表示的是是一个对象拥有另一个对象的关系。比如:车子和轮胎之间的关系。但是车子没了轮胎还是可以存在。

UML类图使用空心菱形+实线+箭头图示表示,菱形的一边指的的拥有者ClassA,实线所在的一边为被拥有者ClassB。

关联(Association):

关联是次于聚合的关系。关联关系一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的。比如:我有一个车子,我和车子的关系就是单向关联关系。箭头指向车子。

它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;
比如,乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;

关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;

UML类图使用一条直线箭头连接,箭头所指的方向为被关联的对象。

注:在最终代码中,关联对象通常是以成员变量的形式实现的;

依赖(Dependency):

依赖是一种比关联关系更弱的关系。依赖关系存在偶然性、临时性。比如:我会开车,别人给我一辆车,我就能开。这时候车子和我的关系就是依赖关系。

UML类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。

与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;

显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;

注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com