设计模式是什么、UML类图
设计模式的历史
设计模式就是前辈们在软件开发过程中,对常见问题总结出的最佳解决方案。
1995 年,GoF(Gang of Four,四个基友)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。
他们所提出的设计模式主要是基于以下的面向对象设计原则。
- 对接口编程而不是对实现编程。
- 优先使用对象组合而不是继承。
具体设计原则有:单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则。
参考:面向对象编程中的6大设计原则 - AI大胜 - 博客园 (cnblogs.com)
代码的可维护性、可扩展性、可复用性
《大话设计模式》中是用“活字印刷术”来解释的,很有意思,我就把我get到的文绉绉的来表述一下:
- 可维护性是针对人来说的,其中可读性是一方便。某个地方不满足要求了,但能很快定位到是哪些代码段,并能换上新的代码,且改完后与其它代码不冲突,就好比给汽车换轮子一样方便。
- 可扩展性就是建议多面向接口编程、尽量使用依赖注入。
- 可复用性就是字面意思了,当在别的项目中实现类似功能时,你的代码可以直接copy过来用,或者你的代码可以实现在不同的场景下也能发挥作用等。
当了解并使用了设计模式,也许你的代码水平就从“传统印刷术”变成了“活字印刷术”
UML类图
上图来自《大话设计模式》第一章:UML类图
- “+”表示public,“-”表示private,“#”表示protected
- 继承关系用空心三角形+实线,三角指向父类
- 实现接口用空心三角形+虚线,三角指向接口
- 关联关系用实线+箭头,表示一个类的字段或属性的类型是另一个类,箭头指向被属性或字段使用的类。
- 依赖:虚线+箭头。表示一个类的方法中用到了另一个类,箭头指向被依赖的类。
- 聚合关系用空心菱形+实线+箭头,表示类的字段或者属性的类型是另一个类型的集合(数组或List),箭头指向使用集合的类。
- 合成(组合)关系用实心菱形+实线+箭头,表示一个类的字段和属性用到另一个类型,且该字段或属性的生命周期完全同类的实例。通常是在构造函数中要初始化这些字段或属性。
符号 | 关系 | 描述 |
---|---|---|
空心三角+实线 | 继承 | 三角指向父类 |
空心三角+虚线 | 实现接口 | 三角指向接口 |
实线+箭头 | 关联 | 一个类的字段或属性用到了另一个类,箭头指向另一个类 |
虚线+箭头 | 依赖 | 一个类的方法的参数或方法体中用到了另一个类,箭头指向另一个类 |
空心菱形+实线+箭头 | 聚合 | 类的字段或者属性的类型是另一个类型的集合(数组或List),箭头指向另一类型 |
实心菱形+实线+箭头 | 合成(组合) | 一个类的字段和属性用到另一个类型,且该字段或属性的生命周期完全同类的实例。通常是在构造函数中要初始化这些字段或属性。 |
UML工具
貌似processon就挺好的。
更新于:2023.5.27