23种设计模式
23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。
创建型 | 结构型 | 行为型 | |||
---|---|---|---|---|---|
单例模式 | 原型模式 | 代理模式 | 桥接模式 | 观察者模式 | 访问者模式 |
工厂模式(工厂方法和抽象工厂) | 装饰者模式 | 组合模式 | 模板模式 | 备忘录模式 | |
建造者模式 | 适配器模式 | 享元模式 | 策略模式 | 命令模式 | |
门面模式 | 职责链模式 | 解释器模式 | |||
迭代器模式 | 中介模式 | ||||
状态模式 | |||||
常用 | 不常用 | 常用 | 不常用 | 常用 | 不常用 |
创建型设计模式总结
创建型设计模式主要解决“对象的创建”问题。
以下只总结常用的3种创建型设计模式。
创建型设计模式 | 原理 | 场景 |
---|---|---|
单例模式 | 创建全局唯一的对象 | |
工厂模式 | 创建不同但是相关类型的对象(继承同一父类或者接口的一组子类) | |
建造者模式 | 创建复杂对象,通过设置不同的可选参数定制化创建 |
结构型设计模式总结
结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。
以下只总结常用的4种结构型设计模式。
结构型设计模式 | 原理 | 场景 |
---|---|---|
代理模式 | 不改变原始类接口的条件下,为原始类定义一个代理类,主要目的是控制访问 | 监控、统计、鉴权、限流、事务、幂等、日志、RPC、缓存 |
装饰者模式 | 主要解决继承关系过于复杂的问题,通过组合来替代继承,给原始类添加增强功能 | IO |
适配器模式 | 提供跟原始类不同的接口,用来做适配的,它将不兼容的接口转换为可兼容的接口 | 补救设计上的缺陷 |
门面模式 | 通过封装细粒度的接口,提供组合各个细粒度接口的高层次接口,来提高接口的易用性,或者解决性能、分布式事务等问题 |
行为型设计模式总结
行为型设计模式主要解决的就是“类或对象之间的交互”问题。
以下只总结常用的6种行为型设计模式。
行为型设计模式 | 原理 | 场景 |
---|---|---|
观察者模式 | 将观察者和被观察者代码解耦,又叫发布订阅模式 | 邮件订阅、RSS Feeds |
模板模式 | 在一个方法中定义一个业务逻辑骨架,并将某些步骤推迟到子类中实现 | AbstractList addAll() |
策略模式 | 定义一个策略接口和一组实现这个接口的策略类,策略的创建由工厂类来完成,客户端运行时根据type动态确定使用哪个策略 | 避免冗长的 if-else |
职责链模式 | 多个处理器依次处理同一个请求 | 过滤器、拦截器 |
迭代器模式 | 也叫游标模式,它用来遍历集合对象,作用是解耦容器代码和遍历代码 | 集合迭代器 |
状态模式 | 它由 3 个部分组成:状态、事件、动作,事件触发状态的转移及动作的执行 | 工作流引擎 |
文档信息
- 本文作者:yindongxu
- 本文链接:https://iceblow.github.io/2022/04/08/23%E7%A7%8D%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)