导图社区 设计模式超全总结
设计模式是一套经过分类编目的、代码设计经验的总结。下图汇总了设计模式的设计原则、创建型模式、结构型模式、行为型模式等。
设计模式总览,详细的描述了各个设计模式的要点。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
设计模式
设计原则
六大原则
单一原则
一个类应该只有一个发生变化的原因
理解:一个类只管一件事,职能单一
开闭原则
对外扩展开放,对内修改关闭
里氏替换原则
父类拥有的性质,在子类中仍然成立
理解:尽量避免重写父类方法
迪米特原则
类与类直接尽量避免强耦合,使用中介类桥接
接口隔离原则
接口功能应保能单一,功能最小化
依赖倒置原则
细节应该依赖抽象,而非抽象依赖细节
组合复用原则(补充)
尽量使用对象组合完成功能,而非继承
创建型模式
五种
单例模式
懒汉模式
使用时才会实例化
可使用volatile+synchronized优化为线程安全
饿汉模式
无论使用与否,都会实例化该类
缺点:资源浪费
静态内部类模式
推荐:线程安全
枚举模式
JDK默认支持线程安全:很少用
工厂模式
简单工厂模式
外部传值,判断返回符合要求对象
避免类与类强耦合,插入工厂类桥接
每个类都有对应工厂类,负责返回其实例对象
抽象工厂模式
一个工厂类能管理多个类,能返回多个不同的类对象
该工厂类应该属于某个领域总类,只管理自己领域下的类
总结
简单工厂:通过外部传入值返回不同对象
抽象工厂:直接通过方法返回不同对象
建造者模式
使用静态内部类的方式管理该类的属性,可配置必选和可选
原型模式
浅克隆,深克隆
避免创建对象及设置属性,付出的巨大开销(查库)
结构型模式
七种
适配器模式
类适配
通过继承+接口的方式,调用被适配类中的方法
适配器继承被适配类,实现目标接口,实现其方法,在方法调用被适配类中方法
使用:定义接口实例化,可避免被适配器多余方法干扰
对象适配
将被适配类对象传入适配器某方法中,处理后返回符合要求数据
接口适配
使用抽象类实现接口,实现其全部方法
使用:继承该抽象类,可选择的实现方法,不用全部实现
装饰模式
多个装饰类实现统一接口
可随时更换装饰类的实现
代理模式
每个类都拥有一个代理类,代理类代理功能类所有方法
代理类和功能类方法一致,其方法中调用功能类对应方法
外观模式
使用外观类管理相关多个类的统一方法
调用外观类一个方法,相当于调用了一组相关联的方法
区别
代理模式:每个代理类管理相应类所有方法
外观模式:一个外观类管理多个相关联类响应方法
桥接模式
桥接模式总的来说:是俩个维度的组合
接口实现为一个维度,继承抽象类为一个维度,俩者组合
接口实现是传入抽象继承类构造函数中的组合方式
组合模式
使用一个对象,管理一组相似的对象
即一个整体,管理一组相似的个体,该整体可操作个体
文件系统
文件系统由文件和目录组成
目录有文件和目录,目录就相当于由单个对象或组合对象组合而成
享元模式
经典享元模式
工厂享元模式
实例对象复用
缓存频繁使用的实例对象,避免重复实例化
行为型模式
十一种
解释器模式
数据源
规定好的数据结构
存入数据,可从规定方法内获取数据
解析器
获取数据:从约定方法取
解析数据:返回结果
不同的解析器负责解析不同类型内容
状态模式
类的行为是基于它的状态改变的
状态改变行为的具体实现将改变
各种状态能形成一个闭环
每个状态拥有所有行为
不同状态有对应行为
状态调用行为不一致,可报错提示
策略模式
通过接口约定方法
随时替换接口实现类,可随时更改具体实现
观察者模式
观察者类
需要有约定方法或标签(注解)
注解+反射,能使观察者类高度灵活
主题类
一系列处理观察者类的操作
管理所有添加的观察者类
命令模式
命名类:将相关命令包裹在对象中
命名调用类:寻找可以执行该命令的合适对象
十分相似
中介者模式
将多对象的耦合,转为与自身的耦合
多个对象耦合
引用中介者类
备忘录模式
备忘者类能保存某个类的数据
可随时通过备忘者类复原保存的数据
责任链模式
一个请求中包含另一个请求(链表)
每个请求都是一个独立个体
每个请求可配置权限,是否执行
请求会在链上移动, 直至所有处理者都有机会对其进行处理
访问者模式
不改变原有逻辑实现结构
将逻辑封装在访问者类中,可动态替换该类
可通过增加访问者类扩展逻辑
迭代器模式
将容器内对象数据全部遍历出来
不保留容器内部细节
模板模式
抽象父类中定义固定的行为
子类可按需重写相应的行为
扩展子类,可拓展相应的行为实现
结束