设计模式总结

文章目录

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

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

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

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

相关推荐
rolt1 天前
PlantUML描述《分析模式》第4章企业财务观察(2)
领域模型·架构师·uml
吴声子夜歌4 天前
PlantUML——状态图
uml·plantuml·状态图
吴声子夜歌4 天前
PlantUML——序列图
uml·plantuml·序列图
吴声子夜歌4 天前
PlantUML——活动图
uml·plantuml·活动图
吴声子夜歌5 天前
PlantUML——类图(一)
uml
吴声子夜歌5 天前
PlantUML——类图(二)
uml·plantuml·类图
吴声子夜歌5 天前
PlantUML——对象图
uml·plantuml·对象图
吴声子夜歌6 天前
PlantUML——用例图
uml·plantuml
rolt8 天前
PlantUML描述《分析模式》第4章企业财务观察(1)
产品经理·架构师·uml·系统工程
KobeSacre9 天前
UML 学习
学习·uml