关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

结构型设计模式

发布时间:2023-06-26 12:59:58

设计模式

  • 设计模式代码地址https://gitee.com/BeliveLove/source-code/tree/master/src/main/java/com/example/demo/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/

结构型设计模式

代理模式

  • 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问.
  • 静态代理(强制代理)
    • 抽象主题(StaticSubjectInt):定义了主题的规范、接口
    • 真实主题(RealSubject):实现了抽象主题做的事,是代理者最后代理的对象
    • 代理者(StaticProxy):提高了与真实主题一样的接口,内部引用了真实主题,能够对真是主题的访问权限进行控制
  • 静态代理的优点、缺点
    • 缺点:
      • 静态代理通过实现高层接口来实现代理模式(如果n个实现代理,则需要n个代理者)
      • 代理者与实现者存在着许多代码一致性
    • 优点:
      • 保护真实工作者
      • 易拓展目标对象
      • 解耦(客户与目标对象分离)
  • 动态代理
    • 抽象主题(Subject):定义了业务的高层接口
    • 具体主题(RealSubject):实现了业务高层接口(具体工作者)
    • 代理者(ProxyInvocation):基于JDK默认代理实现了InvocationHandler接口
  • 优点:
    • 不需要实现高层业务接口(与静态代理相比,进一步解耦)
    • 能够在运行时改变改变代理者(相对于静态代理)
  • JDK动态代理方法



    适配器模式

    • 适配器模式的定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作.
    • 适配器模式

    • 适配器模式的优点、缺点
      • 优点
        • 透明的调用了目标接口
        • 复用了现存的类,不需要修改原有代码而重用现存的适配者
        • 允许不兼容对象通信
      • 缺点
        • 适配器需要结合具体场景分析,增加了系统的复杂性
        • 代码阅读困难

    桥接(Bridge)模式

    • 桥接模式的定义:将一个复杂的组件拆成两个独立又相关的继承层次结构:功能性的抽象和内部实现(人话:抽象与实现分离,使它们独立变化)
    • 桥接模式

    • 桥接模式的优点、缺点
      • 优点
        • 抽象与实现分离,扩展能力强
        • 其实现细节对客户透明
      • 缺点
        • 增加了系统复杂性
        • 需要设计者识别可变抽象者的独立维度(能够识别抽象对象的可变属性)

    装饰器(Decorator)模式

    • 装饰器模式定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责.
    • 装饰器模式

    • 装饰器模式的优点、缺点
      • 优点:
        • 比继承拓展更灵活,代码侵入更低
        • 可以对构建角色、装饰者进行组合
      • 缺点:
        • 类的数目变多,增加系统复杂性

    外观(Facade)模式

    • 外观模式定义:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式
    • 外观模式
      • 外观(Facade)角色:为多个子系统提供共用的接口(客户访问的对象)
      • 子系统(SubSystem)角色:实现系统的部分功能,客户可以通过外观角色访问它
    • 外观模式的优点、缺点
      • 优点
        • 降低了不同的子系统与客户的耦合关系
        • 子系统的更改不会影响客户端
        • 减少了客户端创建对象的数目
      • 缺点
        • 不能很好的限制子系统
        • 对子系统的增加,需要修改外观角色,不符合开闭原则

    享元(Flyweight)模式

    • 享元模式定义: 运用共享技术来有效地支持大量细粒度对象的复用.它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率
    • 享元模式

    • 享元模式的优点、缺点
      • 优点
        • 减少需要处理的对象数目
        • 如果对象能够持续,减少内存消耗(本质就是缓存共享对象,减少内存消耗)
      • 缺点
        • 读取享元对象耗时间
        • 外部化非享元对象,增加系统复杂性

    组合模式

    • 组合模式定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式.
    • 组合模式
      • 安全模式
      • 透明模式

      • 安全模式与透明模式去的区别
        • 安全模式将接口的规范进行了缩小,对于树干、树叶来说,实现的方法不一致,客户需要知道构件细节,牺牲了透明性
        • 透明模式将规范统一在接口,对于树叶来说,不需要进行管理操作,因此需要在树叶的操作方法里进行其余的处理(外抛异常......)
    • 组合模式的优点、缺点
      • 优点
        • 使客户方便的处理一个或多个对象,简化了客户端使用
        • 容易添加对象,无需修改源码,符合开闭原则
      • 缺点
        • 设计复杂
        • 增加了系统复杂性

    /template/Home/leiyu/PC/Static