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

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

设计模式解析

代理模式

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

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

    装饰模式

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

    典型实现步骤:

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

    单例模式

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

    实现方式有:

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

    工厂模式

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

    类型:

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

    策略模式

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

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

    门面模式

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

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

    模板方法模式

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

    特点包括:

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

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

    责任链模式

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

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

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

    建造者模式

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

    实现方式:

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

    总结

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

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

    你可能感兴趣的文章
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
    查看>>
    Objective-C实现average mean平均数算法(附完整源码)
    查看>>
    Objective-C实现average median平均中位数算法(附完整源码)
    查看>>
    Objective-C实现average mode平均模式算法(附完整源码)
    查看>>
    Objective-C实现avl 树算法(附完整源码)
    查看>>
    Objective-C实现AvlTree树算法(附完整源码)
    查看>>
    Objective-C实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)
    查看>>
    Objective-C实现BACKTRACKING 方法查找集合的幂集算法(附完整源码)
    查看>>
    Objective-C实现bailey borwein plouffe算法(附完整源码)
    查看>>
    Objective-C实现balanced parentheses平衡括号表达式算法(附完整源码)
    查看>>
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>
    Objective-C实现base64加解密(附完整源码)
    查看>>
    Objective-C实现base64编码 (附完整源码)
    查看>>
    Objective-C实现base85 编码算法(附完整源码)
    查看>>
    Objective-C实现basic graphs基本图算法(附完整源码)
    查看>>
    Objective-C实现BCC校验计算(附完整源码)
    查看>>
    Objective-C实现bead sort珠排序算法(附完整源码)
    查看>>
    Objective-C实现BeadSort珠排序算法(附完整源码)
    查看>>