zoukankan      html  css  js  c++  java
  • 关于c++设计模式的总结

    关于c++设计模式的总结

    关于c++设计模式的总结
    抽象工厂,决定产品系列的产品的组合,特点是创建同一款式的产品系列。缺点是增加产品组件,需要修改抽象工厂接口,影响抽象工厂子类。

    关于c++设计模式的总结
    builder,决定产品的各个部分的build的过程。替换相应的builder子类,就可以修改产品相应的各个part部件的实现;替换相应的Director子类,就可以修改builder组件的调用顺序(即控制创建过程)。

    关于c++设计模式的总结
    工厂方法,产品子类和creator子类一 一对应。不直接调用FactoryMethod操作,定义了何时调用FactoryMethod。扩展相关子类可以修改此调用时间

    关于c++设计模式的总结
    Prototype,产品自身就是自己的creator

    关于c++设计模式的总结
    Singleton,产生全局的单一实例

    1)以上是创建型:创建型设计模式核心是通过替换直接调用new创建具体对象这种方式,从而去client代码和产品对象之间的耦合。client都是通过接口引用工厂,通过接口引用产品,所以替换更方便。

    关于c++设计模式的总结
    adapter,描述了client如何做到通过target接口,来使用Adaptee的操作函数。

    关于c++设计模式的总结
    bridge,“抽象接口定义”和“具体实现部分”分离。分离后,可以各自发展。

    关于c++设计模式的总结
    composite,从共同接口派生,使对单个对象和组合对象的使用具有一致性,并且支持递归组合。

    关于c++设计模式的总结
    关于c++设计模式的总结
    Decorator,共同的父类,接口相同,可以透明的、递归的增加额外的职责。与composite区别是只有一个组件。与strategy区别是Decorator修饰component的外观,strategy提取分离component的内部策略实现。

    关于c++设计模式的总结
    façade,分层的概念中,层与层之间提供统一、集中的接口。
    使不同层的对象不会出现网状交织。这样各层可以独立发展。façade对象承担上层请求转发给下层对应对象。

    关于c++设计模式的总结
    关于c++设计模式的总结
    flyweight,分离对象的内部、外部状态,使得大量细粒度对象可以共享,节省存储空间

    关于c++设计模式的总结
    关于c++设计模式的总结
    proxy,proxy是Realsubject接口的子集或者相同接口,从而代替Realsubject。proxy来控制Realsubject,而不是client直接控制和访问Realsubject。这样proxy可以对Realsubject进行各种额外的控制。

    2)以上是结构性模式。

    关于c++设计模式的总结
    chain of responsibility,每个在链上的对象都有一致的处理请求和访问链上后继者的接口。链式传递请求,使得请求的发送者和接收者解耦。
    直到某个处理

    关于c++设计模式的总结
    command,把请求封装为一个command对象,虽然抽象的接口一致,但是可以派生各种command子类。command对象中包含了对接收者的引用、和调用接收者的一系列操作,通过动态创建command子类对象以及创建时传入不同的接收者引用,可以达到动态配置(参数化)请求的目的。进而实现上下文相关的菜单。Command模式将调用操作的对象与知道如何实现该操作的对象解耦。增加新的Command变得很容易。

    关于c++设计模式的总结
    interpreter,解释器和文法表示分开。定义一种文法,定义一个解释器用抽象语法树辅助解释文法。同样的接口派生而来,以便递归组合,实现抽象的语法树。

    关于c++设计模式的总结
    iterator,将对聚合对象的“访问和遍历”从聚合对象中分离出来,并放入到一个iterator对象中。对client隐藏了composite的内部组织。

    关于c++设计模式的总结
    关于c++设计模式的总结
    Mediator,控制和协调一组对象间的交互,对象只跟中介相连,对象间不直接相连,从而减少连接数。方便对象独立发展。

    关于c++设计模式的总结
    Memento,向originator请求一个保存了内部状态的Memento,后面需要恢复时,传回此Memento给Originator,从而Originator恢复回之前状态,并且不保留Originator的内部细节

    关于c++设计模式的总结
    observer,subject状态改变时,通知各个observer。两者独立发展,通过抽象接口调用,减少两者耦合。

    关于c++设计模式的总结
    state,把各个行为封装在接口一致的各个状态对象中,所以改变状态时,行为得到改变。并且把请求委托给他的状态对象来处理。state模式将与“特定状态”相关的行为局部化,并且将不同状态的行为分割开来。

    关于c++设计模式的总结
    strategy,物理结构和算法分离,算法封装在一个独立对象中。

    关于c++设计模式的总结
    template method,定义算法骨架,但一些具体实现由子类定义。把公共的操作过程,做成模板

    关于c++设计模式的总结
    visitor,对象中包含多个不同接口类型的子对象。访问操作封装为独立对象。结构对象和操作对象分离

    3)以上是行为型模式。

    对设计模式有兴趣的话,更详细的总结,可看我的ppt。

    或者请参考《设计模式:可复用面向对象软件的基础》一书
    英文版《Design Patterns: Elements of Reusable Object-Oriented Software》

  • 相关阅读:
    python 继承与组合
    google浏览器安装不上的绝望经历
    python 类,对象
    Javascript学习笔记——闭包
    面试小结:html/css实现元素居中
    @清晰掉 qsort()
    @清晰掉 sprintf sscanf双胞胎
    @清晰掉 GDB调试器中的战斗机
    @大脑练习: 计算两个矩阵的乘积
    js测试用
  • 原文地址:https://www.cnblogs.com/Chary/p/12860004.html
Copyright © 2011-2022 走看看