美文网首页
GeekBand C++设计模式 First Week

GeekBand C++设计模式 First Week

作者: 孙小俊 | 来源:发表于2016-07-12 01:17 被阅读0次

    设计模式

    设计模式是描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样我们就可以对于同样的问题使用同样的解决办法。

    为什么要有设计模式呢?因为软件设计本身复杂性大,复杂的根本原因在于变化,包括需求的变化,平台的变化,环境的变化等。

    如何解决复杂性呢? 常用的解决办法有分解和抽象。分解是分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单的问题。抽象是更高层次的一种通用技术。由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。

    面向对象设计原则

    变化是复用的天敌,面向对象设计的最大优势在于:抵御变化。

    理解面向对象可以包含三个层面的意思:1)理解隔离变化 2)类各司其职 3)对象的含义(从语言实现层面来看,对象封装了数据和代码;从规格层面讲,对象是一系列可被使用的公共接口;从概念层面讲,对象是某种拥有责任的抽象)

    面向对象设计的 8 大原则:

    1. 依赖倒置原则
    2. 开发封闭原则
    3. 单一职责原则
    4. Liskov替换原则
    5. 接口隔离原则
    6. 优先使用对象组合,而不是继承
    7. 封装变化点
    8. 针对接口编程,而不是针对实现编程

    设计模式的分类

    从目的来看,可分为创建型,结构型,行为型。从范围来看,可分为类模式处理类与子类的静态关系;对象模式处理对象间的动态关系。

    从封装变化角度对模式分类:

    组件协作: Template Method, Strategy, Observer/ Event

    单一职责: Decotator, Bridge

    对象创建: Factory Method, Abstruct Factory, Prototype, Builder

    对象性能: Sigleton, Flyweight

    接口隔离: Facede, Proxy, Mediator, Adapter

    状态变化: Memento, State

    数据结构: Composite, Iterator, Chain of Resposibility

    行为变化: Command, Visitor

    领域问题: Interpreter

    重构关键技法:

    1. 静态 -> 动态
    2. 早绑定 -> 晚绑定
    3. 继承 -> 组合
    4. 编译时依赖 -> 运行时依赖
    5. 紧耦合 -> 松耦合

    策略模式

    观察者模式

    装饰模式

    桥模式

    相关文章

      网友评论

          本文标题: GeekBand C++设计模式 First Week

          本文链接:https://www.haomeiwen.com/subject/wwbjjttx.html