博客
关于我
设计模式小结
阅读量:613 次
发布时间:2019-03-12

本文共 1230 字,大约阅读时间需要 4 分钟。

设计模式解析

代理模式

代理模式允许在不直接暴露目标对象的情况下,通过中间的代理对象来间接操作目标对象。以下是主要特点:

  • 方法镜像:代理对象实现目标对象相同的接口。由于使用JDK动态代理,代理对象会自动实现目标对象的所有方法。
  • 方法拦截:用户调用的方法如invoke()都会被代理层拦截并执行。
  • 接口依赖:使用JDK动态代理时,必须有目标对象实现的接口。
  • 静态代理优化:对于接口方法较多的场景,静态代理能在不实现所有接口的情况下,灵活扩展功能。
  • 动态代理通过JDK API自动生成代理类,实现接口的所有方法。cglib则通过生成子类实现功能扩展。

    装饰模式

    装饰模式通过包装增强对象,且不改变原接口劣势。其优势包括可更灵活地增强功能,允许动态添加功能。

    典型实现步骤:

  • 定义装饰抽象类。
  • 创建具体装饰器继承自抽象类,并传递被装饰对象或已有装饰对象。
  • 增加功能实现。
  • 相比继承方式,装饰模式更适合不改变现有接口的情况,并且能动态添加功能。

    单例模式

    单例模式防止多实例创建,保证类中仅有一个实例。

    实现方式有:

  • 饿汉式:提前初始化实例,可能造成内存浪费,但保证了快速访问。
  • 简单懒汉式:在第一次使用时初始化实例,减少内存占用。
  • 双重检测懒汉式:使用双重锁保证线程安全。
  • 静态内部类懒汉式:利用静态初始化器确保线程安全,减少锁竞争。
  • 枚举式:通过枚举确保单例创建安全。
  • 选择时需平衡内存占用和初始化延迟。

    工厂模式

    工厂模式将对象的创建抽象化,适用于不同场景的对象创建需求。

    类型:

  • 静态工厂:单点调用,无需构造对象。
  • 工厂方法:通过工厂类调用指定构造器。
  • 抽象工厂:提供多种工厂接口,支持多样化对象组合。
  • 应用广泛于创建复杂对象,支持灵活配置。

    策略模式

    策略模式定义算法组,支持动态切换,优点包括灵活性和可扩展性。其缺点是增加了策略类数量,加大了依赖关系,需明确策略实现。

    应用于资源处理,如ThreadPoolExecutor的拒绝策略。

    门面模式

    门面模式提供统一接口,外置复杂系统子系统。其优势在于简化客户端调用,减少子系统直接引用复杂度。

    应用于外部系统调用内部不同系统(如日志框架)。

    模板方法模式

    模板方法通过抽象方法延迟实现,具体方法由子类实现。

    特点包括:

    • 公共代码抽象为抽象方法。
    • 子类可重定义部分方法,保持算法框架不变。

    适用于需要灵活扩展的算法框架。

    责任链模式

    责任链模式通过链式结构处理请求,特点包括:

    • 每个处理步骤独立成类。
    • 通过链表连接处理器,简化代码结构。

    应用于数据流处理,如过滤器链。

    建造者模式

    建造者模式通过逐步设置属性完成对象构造,特点包括构造过程可终止,允许部分属性赋值。

    实现方式:

  • 在目标类定义建造器内部类。
  • 允许按步骤构造对象,增加灵活性和安全性。
  • 优于传统的构造方式,支持复杂属性初始化。

    总结

    以上设计模式各有优劣,应根据具体场景选择最合适的模式。通过合理运用,可以优化系统结构,提高代码可维护性和扩展性。

    转载地址:http://qiwaz.baihongyu.com/

    你可能感兴趣的文章
    Nginx upstream性能优化
    查看>>
    Nginx 中解决跨域问题
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 负载均衡与权重配置解析
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置https(一)—— 自签名证书
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx 配置解析:从基础到高级应用指南
    查看>>