第三章:好的设计原则(架构师之路)

一、面向对象的设计原则

二、开闭原则

  • Open(Open for extension)
    • 模块的行为必须是开放的、支持扩展的,而不是僵化的
  • Closed(Closed for modification)
    • 在对模块的功能进行扩展时,不应该影响或大规模地影响已有的程序模块
  • 绝大部分的设计模式都符合开闭原则
  • 抽象化是开闭原则的关键

要求开发人员可以在不修改系统中现有的功能代码的前提下,而实现对应用系统的软件功能进行扩展

三、单一职责原则

  • 高内聚性原则
  • 避免相同的职责(也称为功能)分散到不同的类中实现
  • 避免一个类承担过多的职责。
  • 类的设计主要工作是“发现职责”并“分离职责

四、里氏替换原则

  • 针对继承的设计原则
  • 子类型必须能够替换掉它们的父类型、并出现在父类能够出现的任何地方。
  • 子类可以扩展父类的功能,但不能改变父类原有的功能
  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  • 子类中可以增加自己特有的方法。
  • 当子类的方法重载父类的方法时,方法的前置你件(既方法的形参)要比父类方法的输入参数更宽松
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(既方法的返回值)要比父类更严格

五、依赖倒置原则

  • 将依赖关系倒置为依赖接口
  • 上层模块不应该依赖于下层模块,它们共同依赖于一个抽象
  • 父类不能依赖子类,它们都要依赖抽象类
  • 抽象不能依赖于具体,具体应该要依赖于抽象

六、接口隔离原则

  • 一个类对另外一个类的依赖性应当是建立在最小的接口上
  • 客户端不应该依赖那些它不需要的接口(方法)
  • 多个专门的接口,而不使用单一的总接口
  • 一个接口就只代表一个角色 
  • 使用接口隔离原则拆分接口时,首先必须满足单一职责原则

七、合成复用原则

  • 又称为组合/聚合复用原则
  • 尽量使用对象组合,而不是继承来达到复用的目的
  • 一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象
  • 新的对象通过委派调用已有对象的方法达到复用其已有能的目的
  • 组合/聚合复用:耦合度相对较低,选择性地调用成员对象的操作;可以在运行时动态进行。(“黑箱”复用)

八、迪米特法则

  • 要求一个软件实体应当尽可能少的与其他实体发生相互作用
  • 又称为最少知识原则
    • 不要和“陌生人”说话
    • 只与你的直接朋友通信
    • 每一个软件单位对其他的单位都只有最少的智识,而且局限于那些与本单位密切相关的软件单位

九、小结

单一职责原则:要求在软件系统中,一个类只负责一个功能领域上的相应职责

开闭原则:要求一个软件实体应当对扩展开放,对修改关闭,既在不修改源代码的基础上扩展一个系统的行为

里氏替换原则:可以通谷表述为在软件中如果能够使用基类对象,那么一定能够使用其子类对象。

依赖倒转原则:要求抽象不应该依赖于细节,细节应该依赖于抽象;要针对接口编程,不要针对实现编程。

接口隔离原则:要求客户端不应该依赖地些它不需要的接口,即将一些大的接口细化成一些小的接口供客户端使用

合成复用原则:要求复用时尽量使用对象组合

迪米特法则:要求一个软件实体应该尽量可能少的与其它实体发生相互作用

猜你喜欢

转载自blog.csdn.net/l274747948/article/details/81077486