创建型模式
- 工厂、抽象工厂、建造者、原型、单例
结构型模式
- 适配器模式
- 前后端统一的返回参数处理
- 将上层不同的数据结构,通过适配器,转换成统一的数据结构
- 桥接模式
- 聚合平台、资源整合,例如聚合支付平台(支付渠道+支付方式实现)
- 将抽象与实现分离,通过桥产生联系
- 组合模式
- 决策树、规则引擎
- 将服务各个节点自由组合对外提供服务 (组合成一组可以被调用的结构树)
- 装饰器模式
- 在原有逻辑不变的情况下,对对象的增强
- 门面模式
- 接口白名单
- 屏蔽复杂的实现,封装成职责单一且简单的方法,对外提供服务
- 享元模式
- 秒杀场景的优化:多几缓存架构,缓解db系统单点问题
- 以解决程序性能为主,减少对象的创建数量,共享通用对象,减少内存的使用,提升系统的访问效率,例如:共享数据
- 代理模式
- spring aop编程、mybatis
- 包装执行过程,可以对原有的接口包装增强,也可以是拦截等
行为型模式
- 责任链模式
- 审批流程,拦截链过滤链
- 避免一个请求,被多个处理者接收处理(这样耦合性太强),采用这一模式,将所有的请求处理者,通过前一个处理者记住下一个处理者(引用)的方式,将所有的处理者,按照优先级连成一条链,直到各个处理者处理返回,或者链路走完为止。层层递进。
- 命令模式
- 计算器、项目经理协调资源开展工作、
JdbcTemplate StatementCallback
- 将抽象的命令与命令背后具体的实现相分离,通过调度者去协调,完成一件事情。
- 计算器、项目经理协调资源开展工作、
- 迭代器模式
- java迭代器实现、遍历组织架构树、遍历决策树…
- 以相同的调用方式,遍历不同的数据结构(list、map、树…),切合一些算法,按照不同的规则遍历,而上层调用不管关系遍历逻辑的具体实现
- 中介者模式
Mysql、oracle、sqlserver => orm => 应用层
这里mybatis 等orm框架就是联系数据库与应用层的中介,其中可以做一些重复的复杂的事情- 中台系统也是一个中介,将底层复杂子系统的功能统一包装,提供外部接口能力
- 备忘录模式
- 版本记录(回滚撤销恢复…)
- 在不破环原有对象的基础上,记录对象每次更新的状态,以便版本控制
- 观察者模式
- 消息订阅系统、jvm提供的观察者机制
- 当一个行为发生时,将该事件,传递给关注他的用户,事件驱动。
- 状态模式
- 策略模式
- 优惠折扣发放(满减、直减、折扣、n元购)、发送消息(短信、彩信、邮件)、支付方式(密码支付、指纹支付、人脸识别)
- 可以替换大量的ifelse,一个行为产生了,选择什么样的策略去应对,将各个应对策略的实现分离开来,至于调度问题,可以采用map k v的形式或者反射的形式处理
- 模版模式
- 分布式事务实现(2PC)
- 一阶段执行各个本地事务逻辑,二阶段,当所有本地事务都提交成功,则方法返回成功;当存在失败,则回滚已经成功的本地事务。这就可以构造成一个调度模版。
- 将一类方法通用的调度模式提取出来形成一个模版,模版里调用各个子方法的具体实现(类似于一个,调度模版)
- 分布式事务实现(2PC)
- 访问者模式
- 数据报表、大数据等场景
- 在一个稳定的数据结构下,通过聚合、转换、数据清洗等,增加易变的访问逻辑