原创

设计模式总览

温馨提示:
本文最后更新于 2023年02月02日,已超过 420 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

设计模式

创建型模式

工厂模式(Factory Pattern)

抽象工厂模式(Abstract Factory Pattern)

  • 增加选择工厂的维度
  • 涉及到产品族

单例模式(Singleton Pattern)

  • 饿汉模式
  • 两次检查+volatile
  • 嵌套类(静态内部类)
  • 用枚举来实现

建造者模式(Builder Pattern)

  • 使用lombak的@Builder,提供链式写法

原型模式(Prototype Pattern)

  • 浅克隆
  • 深克隆

结构型模式

代理模式(Proxy Pattern)

  • 特点

    • 隐藏具体实现
    • 做方法包装、增强
  • 实现

    • JDK动态代理
    • CGLIB动态代理

适配器模式(Adapter Pattern)

  • 默认适配器模式(Default Adapter)

    • 对不感兴趣的接口提供空实现
  • 对象适配器模式

    • 将A对象适配、伪装为B对象

      • 组合模式
  • 类适配器模式

    • 继承A类并实现B的接口

      • 继承

桥梁模式(Bridge Pattern)

  • 调用者和被调用者都可以改变

装饰器模式(Decorator Pattern)

  • 增加小功能,示例如JAVA IO

门面(外观)模式(Facade Pattern)

  • 将功能组合后提供友好的API,示例如SLF4J

组合模式(Composite Pattern)

  • 表示具有层次结构的数据

享元模式(Flyweight Pattern)

  • 对象的共享与重用,如线程池、连接池等

    • 单纯享元模式
    • 复合享元模式

行为型模式

模版方法模式(Template Pattern)

  • 模版定义算法骨架,将步骤留给子类实现

策略模式(Strategy Pattern)

  • 调用者不变,变的只是被调用的方法

命令模式(Command Pattern)

  • 将请求的责任和执行请求的责任分开

观察者模式(Observer Pattern)

  • 单机,使用Guava中的EventBus
  • 消息中间件,如kafka、RabbitMQ

责任链模式(Chain of Responsibility Pattern)

  • 可自由组合责任角色,如流程审批

状态模式(State Pattern)

  • 一个对象在其内部状态发生改变时,改变其行为能力

迭代器模式(Iterator Pattern)

  • 不暴露集合对象的内部表示,提供一种方法顺序访问集合元素

访问者模式(Visitor Pattern)

  • 为一个集合中的每个元素提供多种访问方式

备忘录模式(Memento Pattern)

  • 获取并保存一个对象的内部状态,以便以后恢复它

解释器模式(Interpreter Pattern)

中介者模式(Mediator Pattern)

正文到此结束
本文目录