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

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

设计模式解析

代理模式

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

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

    装饰模式

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

    典型实现步骤:

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

    单例模式

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

    实现方式有:

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

    工厂模式

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

    类型:

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

    策略模式

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

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

    门面模式

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

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

    模板方法模式

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

    特点包括:

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

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

    责任链模式

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

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

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

    建造者模式

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

    实现方式:

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

    总结

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

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

    你可能感兴趣的文章
    Objective-C实现calloc函数功能(附完整源码)
    查看>>
    Objective-C实现canny边缘检测算法(附完整源码)
    查看>>
    Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
    查看>>
    Objective-C实现check strong password检查密码强度算法(附完整源码)
    查看>>
    Objective-C实现chudnovsky algorithm楚德诺夫斯基算法(附完整源码)
    查看>>
    Objective-C实现CIC滤波器(附完整源码)
    查看>>
    Objective-C实现circle sort圆形排序算法(附完整源码)
    查看>>
    Objective-C实现CircularQueue循环队列算法(附完整源码)
    查看>>
    Objective-C实现clearBit清除位算法(附完整源码)
    查看>>
    Objective-C实现climbStairs爬楼梯问题算法(附完整源码)
    查看>>
    Objective-C实现cocktail shaker sort鸡尾酒排序算法(附完整源码)
    查看>>
    Objective-C实现cocktailShakerSort鸡尾酒排序算法(附完整源码)
    查看>>
    Objective-C实现CoinChange硬币兑换问题算法(附完整源码)
    查看>>
    Objective-C实现collatz sequence考拉兹序列算法(附完整源码)
    查看>>
    Objective-C实现Collatz 序列算法(附完整源码)
    查看>>
    Objective-C实现comb sort梳状排序算法(附完整源码)
    查看>>
    Objective-C实现combinationSum组合和算法(附完整源码)
    查看>>
    Objective-C实现combinations排列组合算法(附完整源码)
    查看>>
    Objective-C实现combine With Repetitions结合重复算法(附完整源码)
    查看>>
    Objective-C实现combine Without Repetitions不重复地结合算法(附完整源码)
    查看>>