[A]. 总结.设计模式介绍,面向对象设计原则

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

设计模式初识
  • 软件设计很复杂的根本原因是 “变化”,
    • 客户需求的变化
    • 技术平台的变化
    • 开发团队的变化
    • 市场环境的变化
    这意味着我们写的代码要考虑到这些变化,要能比较方便和快捷的去应对这些变化。比如,一个项目已经完成后,要加功能,对外接口要加参数,数据处理过程中要加处理环节,等等。
  • 软件设计的目标是复用,代码的复用性的高低决定了项目持续开发的工作量,项目的复杂程度。
  • 设计模式就像是一种做事情的套路,每一个模式针对比较普遍的问题,提出了该问题的解决方案的核心。这样,大家可以使用该方案而不必做重复劳动。
    [A]. 总结.设计模式介绍,面向对象设计原则
面向对象设计原则
  • 以下文字部分是个人理解。
  • (1)依赖倒置原则:简单来说就是底层模块应该尽可能通用,容易产生修改的模块应该放在上层。
    [A]. 总结.设计模式介绍,面向对象设计原则

  • (2)开放封闭原则:项目需要修改、添加新的需求时,应该尽可能通过增加新的模块来达到目的,而不是修改已有的模块。
    [A]. 总结.设计模式介绍,面向对象设计原则

  • (3)单一职责原则(SRP):一个类应该只有一个职责,把class 比喻成一个员工,那这个员工就只做一个岗位。在代码扩展时,修改这个类就必然意味着对应的岗位工作内容发生了变化。
    [A]. 总结.设计模式介绍,面向对象设计原则

  • (4)Liskov 替换原则(LSP):继承的原则是子类是父类的一种,比如 人可以作为动物的子类,动物可以作为生物的子类。但是如果用桌子去继承动物,就不合适,因为桌子不是动物,这就会导致桌子这个子类,要关闭掉一些父类中存在的成员函数(比如哺乳方式等)。
    [A]. 总结.设计模式介绍,面向对象设计原则

  • (5)接口隔离原则(ISP):接口应该小而完备。
    [A]. 总结.设计模式介绍,面向对象设计原则

  • (6)优先使用对象组合,而不是类继承。降低代码耦合性可以带来很多好处,比如多人协同开发过程可以减少不必要的错误,提高工作效率,后期项目修改或者Bug修复很容易找到责任人。
    [A]. 总结.设计模式介绍,面向对象设计原则

  • (7)封装变化点:class 有类访问修饰符来限定成员变量和函数的访问权限,这可以隐藏项目内部实现,提高安全性。在使用class 的这一功能时,还要注意封装的不止内部实现,还可以封装变化,比如不容易修改的变量,以及要开放给使用者的变量?<尚未理解透彻>
    [A]. 总结.设计模式介绍,面向对象设计原则
    (8)针对接口编程,而不是针对实现编程。依然是代码解耦的目的。
    [A]. 总结.设计模式介绍,面向对象设计原则