2、开闭原则(Open-Closed Principle, OCP)

定义

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification
软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。

核心思想

开闭原则的核心思想就是抽象。开闭原则的主要目的就是为了让我们在不修改源码的情况下来扩展系统的功能。

阅读更多

1、单一职责原则(Single Responsibility Principle)

核心思想

定义
A class should have only one reason to change. ( 就一个类而言,应该仅有一个引起它变化的原因)

每一个职责都是变化的一个轴线(an axis of change)。当需求变化时,该变化会反映为类的职责变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。

如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生是,设计会遭到意想不到的破坏。

引用自:《Agile Software Development, Principles, Patterns, and Practices》

关于这句话中的 “类的变化” 是指什么,书中并没有给出明确的说明。从字面上来理解的话应该是指类的代码的修改。

那么单一职责的作用是什么呢?我认为主要有以下几点:

  1. 降低类的复杂度
  2. 使代码的可读性和可维护性提高。
  3. 降低业务的耦合度,使某项业务修改时只需要关注一个点,而不是整个业务链。(后面举例说明)
阅读更多