面向对象设计七原则

文章目录

      • 1. 开闭原则
      • 2. 里氏替换原则
      • 3. 依赖倒置原则
      • 4. 单一职责原则
      • 5. 接口隔离原则
      • 6. 迪米特法则
      • 7. 合成复用原则

1. 开闭原则

对扩展开发,对修改关闭。通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类,以实现开闭原则。

  • 提高可测试性。
  • 提高可维护性。
  • 提高可复用性。

2. 里氏替换原则

继承必须确保超类所拥有的性质在子类中仍然成立。对开闭原则的补充,通俗点讲,子类可以扩展父类的功能,但不能改变父类原来的功能,也就是尽量不要重写父类的方法。

  • 实现开闭原则的重要方式之一。
  • 克服继承复用性变差的缺点。
  • 降低出错的概率,降低新扩展导致系统出错的概率。

3. 依赖倒置原则

高层模块不应该依赖于低层模块,两者都应该依赖于抽象;抽象不应该依赖细节,细节应该依赖抽象。主要的核心思想是面向接口编程,而不是实现编程。

  • 降低耦合。
  • 提高稳定性。
  • 增强可读性。
  • 增强可维护性。

4. 单一职责原则

规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。这是很简单的一个原则,但是又是非常难保证的原则,因为往往都做不到一个类只负责一个功能。

  • 增加内聚。
  • 降低复杂度。
  • 提高可维护性。
  • 增强可读性。
  • 减少修改的风险。

5. 接口隔离原则

尽量将大的、臃肿的接口拆分成更小、更具体的接口。约束接口,降低类对接口的依赖程度。

  • 增加灵活性。
  • 增加可维护性。
  • 增加内聚。

6. 迪米特法则

如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。

  • 降低耦合。
  • 提高复用性。
  • 提高可扩展性。

7. 合成复用原则

在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 。如果要使用继承关系,则必须严格遵循里氏代换原则。

  • 维持封装性。
  • 降低耦合度。
  • 提高灵活性。

你可能感兴趣的:(学习总结,设计模式,java,接口)