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

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

      共通点:

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

      意图方面:

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

      实现方面:

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

    适配器模式 vs 外观模式

      共通点:

    • 封装

      意图方面:

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

      实现方面:

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

    模板方法模式 vs 策略模式

      共通点:

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

      意图方面:

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

      实现方面:

    • 模板方法模式使用继承的手段,覆盖子过程的实现方法;
    • 策略模式使用组合的手段,注入不同的算法对象;
  • 相关阅读:
    HDU.2899.Strange fuction(牛顿迭代)
    BZOJ.3771.Triple(母函数 FFT 容斥)
    树的实现(2)
    树的练习
    死锁问题
    进程的三种状态
    线程的同步与实现
    进程间通信详解
    进程和线程以及它们的区别
    https协议
  • 原文地址:https://www.cnblogs.com/infinityu/p/3281922.html
Copyright © 2011-2022 走看看