设计模式总结

文章目录

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

  1. 其中依赖(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类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。

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

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

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

相关推荐
workflower8 天前
GitHub宕机自救指南
测试用例·需求分析·uml·敏捷流程·结对编程
青草地溪水旁14 天前
Astah UML 中,状态机(State Machine)的建模最合适使用「UML 状态图(State Diagram)」
uml·状态机
Liquad Li15 天前
UML(统一建模语言)详解
架构·uml
青草地溪水旁23 天前
UML函数原型中stereotype的含义,有啥用?
c++·uml
青草地溪水旁23 天前
UML函数原型中guard的含义,有啥用?
c++·uml
青草地溪水旁1 个月前
UML函数原型中constraint的含义,有啥用?
c++·uml
范纹杉想快点毕业1 个月前
基于 C 语言视角:流程图中分支与循环结构的深度解析
c语言·stm32·单片机·设计模式·架构·流程图·uml
springfe01012 个月前
UML
架构·uml
不太可爱的大白3 个月前
UML:状态图介绍与绘制
uml
嘉沐_Ran3 个月前
StartUML入门级使用教程——画Class类图
uml