声明:本栏目的 [A] 系列的学习笔记,学习对象为 B 站授课视频 C++设计模式(李建忠),参考教材为《设计模式:可复用面向对象软件的基础》。本栏目 [A] 系列文章中的图件和笔记,部份来自上述资源。

一个目标

  • 管理变化,提高复用

两种手段

  • 分解
  • 抽象

八大原则

[A].总结11.设计模式最后总结

重构技法

[A].总结11.设计模式最后总结

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

  • 李建忠教学,将 gof 23种设计模式 分类。
    [A].总结11.设计模式最后总结

C++ 对象模型

[A].总结11.设计模式最后总结

  • A 继承 B,在内存模型中如图,B的所有的成员放在A的前面,如果B的实例作为A的成员,其内存模型也是一样。所以,类组合应该将B的指针作为A 的成员,如图中的 pb , pb不但可以指向B,也可以指向B的子类。 所有的设计模式都殊途同归,通过用指针指向一个多态对象来展现出灵活性,这是松耦合结构的对象模型基础。

关注变化点和稳定点

  • 对于全都变化和全都稳定的软件,设计模式毫无意义。
  • 每个设计模式都有其缺点,这个缺点其实就是其针对的稳定点,如果稳定点发生变化,那么原本用的设计模式就不再适用,这时往往可以更换使用其他的设计模式。

什么时候不用模式

  • 代码可读性很差时。此时需要先提高可读性,然后再考虑设计模式。
  • 需求理解还很浅时。应该先考虑好需求,可以先不用任何设计模式,先做好第一版第二版,后续更新迭代时再使用设计模式。
  • 变化没有显现时。此时无法把握稳定点和变化点,容易做无用功。
  • 不是系统的关键依赖点。优先考虑在系统的关键模块使用设计模式。
  • 项目没有复用价值时。比如有些外包项目,做完交付后再也不管了可以不用设计模式。
  • 项目将要发布时。首先要保证软件的逻辑正确性,保证产品的可用性。

经验之谈

  • 不要为模式而模式
  • 关注抽象类 和 接口
  • 理清变化点和稳定点
  • 审视依赖关系
  • 要有 Framework 和 Application 的区隔思维
  • 良好的设计是演化的结果,不要追求一步到位。
    [A].总结11.设计模式最后总结

相关文章:

  • 2021-09-24
  • 2021-11-09
猜你喜欢
  • 2021-12-12
  • 2022-12-23
  • 2021-04-11
  • 2021-08-08
相关资源
相似解决方案