设计模式之UML类图
UML
类图可以很清晰的表达程序的设计,在程序开发中各种类存在不同的依赖关系,在UML
中使用不同的箭头来表达类之间的关系,例如依赖关系、关联关系、泛化关系、实现关系、组合关系和聚合关系*。
可以使用StartUML
工具或者Rose
工具来画类图,但是已经2019
年啦。我们有强大的IDEA
开发工具,我们可以安装插件来画类图,下面就是一个类图。
![10417188-07f8d283fb22d4dc.png](https://i-blog.csdnimg.cn/blog_migrate/1f1d3f5ed750335a9172a21499973f9a.webp?x-image-process=image/format,png)
1.1.依赖关系
依赖关系(dependency
),在UML
类图中使用带普通箭头的虚线表示,如下所示:
![10417188-d8309be7fe57c12b.png](https://i-blog.csdnimg.cn/blog_migrate/9bbcb9ec1207f3d9ac48a9ec01161241.webp?x-image-process=image/format,png)
-
UserService
类中使用啦成员变量UserMapper
,故可以描述为UserService
依赖UserMapper
。 -
UserService
类中的saveUser(User user)
方法参数使用啦User
,故可以描述为UserService
依赖User
。 -
UserService
类中的getCorp()
方法的返回类型是Corp
类型,故可以描述为UserService
依赖Corp
。
依赖关系就是一个类A中使用到对方类B,例如私有变量使用B类,方法参数使用B类,构造方法等,那么就可以说是A类依赖B类。在UML类图中就可以使用依赖关系表示。
1.2.泛化关系
泛化关系(generalization
)也称之为继承关系,是依赖关系的一种特例。在UML
类图中使用带实心三角箭头的实线表示,如下所示:
![10417188-55f4b838920e6e92.png](https://i-blog.csdnimg.cn/blog_migrate/11072c71bb56a0e4f273473b25f824d2.webp?x-image-process=image/format,png)
如果A类和B类存在类继承关系,那么在UML类图中就可以使用泛化关系来描述。
1.3.实现关系
实现关系(Implementation
),是依赖关系的一种特例,在UML
类图中使用带实心三角箭头的虚线表示,如下所示:
![10417188-69174ae31a60cbca.png](https://i-blog.csdnimg.cn/blog_migrate/1155273b080e9d94913944a91c03a860.webp?x-image-process=image/format,png)
如果A类实现了B接口,就可以使用实现关系描述。
1.4.关联关系
关联关系(association
),表示的是类与类之间的联系,是依赖关系的一种特例,在UML
类图中使用带普通箭头的实线表示,关联关系中有分为单向关联关系和双向关联关系。如下所示的单向一对一关联关系:
![10417188-ff1c5f3e813637b1.png](https://i-blog.csdnimg.cn/blog_migrate/ab3367e426c3bf1f677aebbd68dd046d.webp?x-image-process=image/format,png)
1.5.聚合关系
聚合关系(aggregation
),表示的是整体与部分之间的关系,属于关联关系的一种特例,所以也具有导航性和多重性,表示的是整体和部分可以分开,例如笔记本和鼠标,笔记本可以离开鼠标,所以他们之间的关系就可以使用聚合关系来描述,在UML
类图中使用空心的菱形箭头实线表示的,
1.6.组合关系
组合关系(composition
),表示的是整体与部分不可分开,例如,人与身份证,合法公民都应该有自己的一个身份证,且不可缺少,所以,他们之间就可以称之为组合关系,在UML
类图中使用带实心的菱形箭头的实线表示,如下所示:
![10417188-b342f0579cc12c6f.png](https://i-blog.csdnimg.cn/blog_migrate/b3d81c4fb944630373c7a511fe6aaa2c.webp?x-image-process=image/format,png)
1.7.设计模式简介
UML类图是学习和使用设计模式的前提,在设计模式中基本可以概括为23种设计模式
创建型模式,多用于说明如何创建对象:
单例模式
、抽象工厂模式、原型模式、建造者模式、工厂模式
,其中单例模式
是为了解决如何保证系统中某一个类只有一个实例,原型模式
是为类解决对象的拷贝问题。结构性模式:
适配器模式
、桥接模式、装饰模式
、组合模式、外观模式、代理模式
等,结构型模式更多的是站在系统设计的角度去考虑问题,例如装饰者模式
可以解决类爆炸的问题,在《图解设计模式》有说明。行为型模式:主要是站在方法的角度上做设计:
观察者模式
、责任链模式
、策略模式、解释器模式、命令模式、中介者模式、迭代器模式、状态模式、模版方法模式等等。
更多文章,更好的阅读体验,请前往个人网站查看 码酱博客