继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!
1. 设计模式概述
1.1 设计模式创始“4人组”
- ErichGamma–艾瑞克·伽马
- Richard Helm—理查德·赫尔码
- Ralph Johnson----拉尔夫·约翰逊
- John Vlissides—约翰·威力斯蒂斯
1.2 软件设计模式
- 称设计模式,本质是面向对象设计原则应用,是一种设计经验总结
- 解决重复发生问题套路
- 具有普遍性
1.3 学习目的
- 提高编程、思维和设计能力
- 使程序设计标准化,提高开发效率,降低开发周期
- 提高代码可重用性、可读性、可扩展维护性
1.4 分类
1.4.1 创建型模式
- 描述“创建对象”
- 将对象创建与使用分离
- 包括单例,原型,工厂,抽象及建造者等5种
1.4.2 结构型模式
- 描述将对象组合成更大结构
- 包括代理,适配器,桥接,装饰,外观,享元,组合等7种
1.4.3 行为型模式
- 描述多个对象互相协作完成复杂任务及分配任务
- 包括模板方法,策略,命令,职责链,状态,观察者,中介者,访问者,迭代器,备忘录及解释器等11种
2. UML
2.1 概述
- Unified Modeling Language,用于设计软件的可视化建模语言,主要定义类图
2.2 类图
- 类图–显示模型静态结构—内部结构以及类之间关系
- 面向对象建模组成部分,简化人对系统理解
- 系统编码测试模型
2.3 类图表示法
2.3.1 类表示法
- 使用带有分割线矩阵来表示,包括类名,属性及方法3块
- 属性/方法可见性符号
- +:public
- - :private
- #:protected
- 属性完整表示:可见性 名称 :类型 [默认参数]
- 方法完整表示:可见性 名称[参数列表] [: 返回值类型]
注意:
1.默认参数可选
2.类型和名称可以互换
栗子:
Person |
---|
+ name: String + age:int |
+ method(): void - method1(): String # method2(int p1,String p2):int |
Person类图说明:
- public String name,public int age
- 方法method(),public,无参,没有返回值
- 方法method()1,private,无参,返回值为int
- 方法method2(),proected,int型参数p1,Sting型参数p2,返回值为int
2.3.2 类之间表示法
2.3.2.1 关联关系
2.3.2.1.1 概念
- 引用关系,用于表示一类对象与另一类对象之间关系
- 分为一般关联,聚合和组合关系
- 一般关联可分为单向关联,双向关联及自关联
2.3.2.1.2 一般关联
- 单向关联,用带箭头实线表示,如图
- 双向关联,用实线连接,如图
- 自关联,用带箭头实线指向自己,如图
2.3.2.1.3 聚合关系
- 强关联关系,整体与部分之间关系,两者可单独存在
- 通过成员对象实现
- 用带空心菱形实线表示,菱形指向整体,如图
2.3.2.1.4 组合关系
- 整体部分关系,整体在部分在
- 用带实心菱形实线表示,菱形指向整体,如图
2.3.2.2 依赖关系
- 使用关系,对象间耦合度最弱,临时关联
- 通过局部变量,方法参数或静态方法来调用被依赖类中某一方法
- 用带箭头虚线表示,箭头从使用者指向被依赖类,如图
2.3.2.3 继承关系
- 对象间耦合度最强,特殊关系,父类子类关系,泛化关系
- 用带空心三角箭头实线表示,箭头由子类指向父类,如图
2.3.2.4 实现关系
- 接口与实现类关系,类中实现接口一切抽象方法
- 用空心三角箭头虚线表示,箭头由实现类指向接口,如图