zoukankan      html  css  js  c++  java
  • 设计模式对比学习

    装饰器模式 vs 适配器模式 vs 代理模式

      共通点:

    • 都是对被依赖类/被依赖对象的封装

      意图方面:

    • 装饰模式的重点在于“扩展”:动态地为一个类添加额外的职责;
    • 适配器和代理模式体现的是封装:
      •  适配器的封装重点在于“隐藏”内部变化(对适配器来说也是伪装),是系统/组件升级良药,使得新旧系统兼容;
      •  代理模式定义是为其他对象提供一种代理以控制对这个对象的访问,重点在于“控制”。

      实现方面:

    • 装饰器模式发生在运行时,属于动态扩展,使用时将被装饰对象作为参数传递给装饰器的构造函数,客户知道被装饰的对象;
    • 适配器模式和代理模式均在编译期实现。被适配和被代理的对象对于客户透明;

    适配器模式 vs 外观模式

      共通点:

    • 封装

      意图方面:

    • 适配器模式改变单个接口的形式,用于不同组件间的兼容;
    • 外观模式为客户提供包装了多个接口的统一接口,通过简化接口方便客户调用(子接口未屏蔽,仍然可定制性地调用),和业务相关性很大,可以说是大粒度的适配器;

      实现方面:

    • 本质上没有定义新的接口,为事后设计;
    • 本质上定义了新的接口,必须事前设计;

    模板方法模式 vs 策略模式

      共通点:

    • 都是通过延迟算法/策略的实现,达到良好扩展性的目的。

      意图方面:

    • 模板方法模式的重点在于其描述固定的算法框架/流程;
    • 策略模式侧重于对一组相似算法/算法簇的包装,彼此可以相互替换;

      实现方面:

    • 模板方法模式使用继承的手段,覆盖子过程的实现方法;
    • 策略模式使用组合的手段,注入不同的算法对象;
  • 相关阅读:
    Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
    Vijos P1785 同学排序【模拟】
    Vijos P1784 数字统计【模拟】
    Vijos P1497 立体图【模拟】
    将你的wordpress博客添加到百度个性首页
    改变wordpress图片上传后的压缩质量
    优化dedecms设置文章url自定义规则
    dedecms首页调用随机文章全自动时时更新
    怎样在wordpress后台显示日志 ID
    sql批量修改wordpress文章发布时间
  • 原文地址:https://www.cnblogs.com/infinityu/p/3281922.html
Copyright © 2011-2022 走看看