zoukankan      html  css  js  c++  java
  • 设计模式 特点比较

    ===================
    策略模式 和 模板模式
    ===================

    相同点: 提供一个抽象的统一接口,可以使用不同的算法来实现这一接口.

    不同点: 策略模式采用 组合方式 ,模板模式采用的是 继承方式. 造成的不同后果是,采用组合方式的策略模式可以动态修改使用的算法实现,而采用继承方法的模板模式则只能使用事先设定的特定算法.



    =======================
    简单工厂 工厂方法 抽象工厂
    =======================

    简单工厂: 抽象了同一类型(比如不同品牌的笔记本电脑)产品的生产过程,通过工厂类来实现对不同产品生产过程的选择.

    工厂方法: 不仅抽象了产品类的生产过程,还抽象了工厂类本身. 将特定的产品的生产过程和特定的工厂相对应. 将原先工厂类中的选择提升到工程类以上的层级---即客户层级. 通过选择特定的工厂,来选择生产特定的产品.

    抽象工厂: 在工厂方法的基础上,将特定的产品生产过程和特定的工厂类之间的对应关系解除,使得工厂类和产品类之间能够产生更多灵活的组合方式.




    =================
    装饰器模式 与 子类化
    =================

    装饰器模式是为一个类添加特定的功能,而不修改原类的代码. 为一个类扩充功能也可以通过继承的方式,在子类中实现父类中不具有的功能.

    装饰器模式的优点: 装饰器为一个类添加功能是采用动态的方式进行的,可以动态增加删除.这个是通过继承,创建子类无法实现的.


    ==================
    代理模式 与 策略模式
    ==================

    代理模式和策略模式在结构上非常相似. 策略模式中 有一组实现相似功能的算法作为可替代算法.
    而代理模式中的代理类主要是为调用类提供某一功能,不强调实现相似功能的算法.

    =====================
    中介模式 和 外观模式
    =====================

    中介模式 在几个相互交互的对象之间建立一个 交互模块. 避免这些交互对象直接的耦合. 外观模式是将一组功能不同的,不具有相互交互性的对象封装成特定功能,提供一个统一的界面 供其他类调用.


    =======================
    建造者模式
    =======================
    建造者模式可以理解为 一个模板模式 的变形. 模板模式的目的是为了在子类中维护一个相同的接口.

    而建造者模式增加了一个 指导者类.用来获取和按照特定顺序调用 建造器子类中的方法. 不但实现了接口的统一(建造器抽象类定义了统一的接口),而且在指导类中指定了 方法调用的先后顺序.

  • 相关阅读:
    CF 7C. Line(扩展欧几里德)
    HDU 1700 Points on Cycle(向量旋转)
    POJ 1673 EXOCENTER OF A TRIANGLE(垂心)
    SRM 594 DIV1 250
    Codeforces Round #207 (Div. 1) A. Knight Tournament(STL)
    POJ 1654 Area(水题)
    POJ 1474 Video Surveillance(半平面交)
    POJ 1473 There's Treasure Everywhere!
    POJ 1329 Circle Through Three Points(三角形外心)
    POJ 1279 Art Gallery(半平面交)
  • 原文地址:https://www.cnblogs.com/yang82/p/8110900.html
Copyright © 2011-2022 走看看