美文网首页
Boolan 设计模式_1

Boolan 设计模式_1

作者: 竹林柳岸 | 来源:发表于2017-06-29 23:27 被阅读0次
主要内容:

本讲主要讲解面向对象设计的八大原则,和其中五个设计模式。

1. 综述

目标:可复用(编译单位级别的复用,不是源代码的拷贝粘贴)
方法:面向对象
解决复杂问题方法:分解和抽象。
面向对象:适应变化、各负其责。

2. 面向对象设计八大原则

还是画图理解起来更容易些。。。


面向对象设计八大原则

【接口标准化】分析问题,有时候应该跳出软件,结合人类发展历史。。。秦始皇统一六国。
雕版印刷(紧耦合) --> 活字印刷(松耦合)

3. GOF-23模式

3.1 template method
  • 应用程序开发人员使用lib时,由于lib的开发人员已经写好程序的主流程和部分步骤的具体实现(这些是相对稳定的), 应用开发人员只需对lib的类进行继承,并重写部分(override)它的成员函数(推荐为protdected类型,不被外界直接调用)即可。(晚绑定)。
  • 前提是有稳定和不稳定的成分,设计模式才有用武之地。如果全部都稳定,或是全部都不稳定,那么就不能使用设计模式。
  • 设计模式看类图时,要找到其中稳定和变化的部分。
  • library说:“你(应用程序)不要调用我(library),让我调用你!”
  • 虚函数和函数指针都是晚绑定。
3.2 strategy
  • 【要动态的看问题,而不只是静态的看待问题。加上时间轴,考虑到未来的变化】
  • 使用多态的变量(类内和类外),要用指针。
  • 为解决同一个问题的不同算法设计一个类,并实现各种的计算方法,当有新的算法时,则扩展算法(定义新的类来实现)。不同算法之间可以相互替换(变化)。
  • 如果if...else if...是绝对稳定的,那么大部分可以采用strategy method。
  • 优点:当存在一些无用的算法时, 代码具有良好的本地性,加载的代码,就是调用相应的哪个实现方法,但利用if..else if...他们也会加载这些无用的算法到代码段,影响性能。
3.3 observer/event观察者模式
  • 编译时依赖。违背依赖倒置原则。
  • c++支持多继承,最好一个是主基类,其他的都是接口类。
  • 对象间一对多的依赖关系,一个对象的状态变化时,所有依赖于它的对象得到通知,并各自自动更新。
  • 目标和观察者独立更改,松耦合。
  • 目标自动发送通知,无需指定观察者。
  • 观察者自己决定是否订阅通知,不订阅通知就不用将这个观察者放入到目标虽维护的对象集合。目标无需知道观察者是否订阅了通知。
  • 单一职责原则表现突出的模式
3.4 decorator
  • 组合-->继承;编译时-->运行时的多态;使用时,编译时装饰-->运行时装饰。
  • CryptoStream继承于Stream,并拥有一个Stream的指针(使用这种方法99%都是decorator模式)。继承是为了继承接口,完善接口规范,指针是为了实现运行时多态,实现具体的类。
  • 当多个类继承于同一个类时,多个类的相同的成员应该提到基类中,如果其中有些子类并不使用某些基类数据成员,这时就可以将这些数据成员放入一个中间类(DecoratorStream)中.
  • 主体操作和扩展操作应该分开继承。



3.5 bridge
  • 类的数目1+n+n*m-->1+n+m
  • 当多个类继承同一个类,基类中有一些不被子类重写的成员函数时,可将基类拆分成两个类。(Messager和MessageImp)
    抽象部分(平台实现)和实现部分(业务实现),多个变化维度分离,使他们可以独立变化。

相关文章

  • C++设计模式-第一篇 (Boolan)

    C++设计模式-第一篇 (Boolan) 本章内容:1 面向对象设计原则2 GOF-23种设计模式分类3 模板方法...

  • Boolan 设计模式_1

    主要内容: 本讲主要讲解面向对象设计的八大原则,和其中五个设计模式。 1. 综述 目标:可复用(编译单位级别的复用...

  • C++设计模式-第三篇 (Boolan)

    C++设计模式-第三篇 (Boolan) 本章内容:1 备忘录模式2 状态模式3 组合模式4 迭代器模式5 职责模...

  • C++设计模式-第二篇 (Boolan)

    C++设计模式-第二篇 (Boolan) 本章内容:1 工厂方法模式2 抽象工厂模式3 原型模式4 构建器模式5 ...

  • 2018-03-22

    Boolan C++设计模式二 “对象创建”模式:通过“对象创建”模式绕开new,来避免对象创建(new)过程中所...

  • 2018-03-18

    Boolan C++设计模式一 设计模式:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案...

  • Boolan 设计模式_3

    ”对象性能“模式:解决对象创建代价问题 1. 单件模式 在整个系统中保证只存在一个实例。 构造函数和拷贝构造函数设...

  • Boolan 设计模式_2

    主要内容: 本节主要讲对象创建和接口隔离各四种设计模式。 1. 对象创建模式 1.1 工厂模式 ISplitter...

  • 2018-03-28

    Boolan C++设计模式三 “对象性能”模式:面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代...

  • Boolan-设计模式-week1

    设计模式:每一个模式描述一个在我们周围不断重复发生的问题,以及问题解决方案的核心。解决复用问题,分割不变的抽象类和...

网友评论

      本文标题:Boolan 设计模式_1

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