简介
Java中的七大设计原则,也称为SOLID原则,是为了让程序(软件)具有更好的代码重用性,可读性,可扩展性,可靠性,使程序呈现高内聚,低耦合的特性。
目的
- 代码可重用性:相同功能的代码,不用多次编写。
- 可读性:编程规范性,便于其他程序员的阅读和理解。
- 可扩展性:当需要增加新的功能的时候,非常方便,称为可扩展性。
- 可靠性:当我们新增功能后,对原来的功能没有影响。
- 使程序呈现高内聚、低耦合特性。
基本原则
1. 单一职责原则(SRP)
对类来说的,即一个类应只负责一项职责,如果A负责两个不同的职责:1,2。当1需求变更改变A时,可能造成2执行错误,所以需要将A粒度分解为A1,A2。
单一职责原则注意事项和细节
- 降低类的复杂度,一个类只负责一项职责。
- 提高类的可读性,可维护性
- 降低变更引起的风险
- 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违
- 反单一职责原则,只有类中方法数量足够少,可以在方法级别保持单一职责原则
2. 开闭原则(OCP)
一个类应该对扩展开放,对修改关闭。这意味着您应该能够扩展类的行为而不修改其源代码。
3. 里氏替换原则(LSP)
子类型应该可以替换其基类型。换句话说,如果您有一个类层次结构,您应该能够使用任何子类替换其父类,而不影响程序的正确性。
4. 接口隔离原则(ISP)
客户端不应被迫依赖于它们不使用的接口。这意味着您应该将大型接口拆分为更小,更具体的接口,以便客户端只需要依赖于与它们相关的接口。
5. 依赖反转原则(DIP)
高级模块不应依赖于低级模块。两者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。
6. 迪米特法则(LoD)
一个模块不应该知道它操作的对象的内部工作原理。换句话说,一个模块只应该与它的直接邻居交谈,而不是与陌生人交谈。
7. 合成复用原则
优先使用组合而不是继承来构建复杂对象。这意味着您应该优先使用组合较简单的对象来构建复杂的对象,而不是从复杂的类继承。
核心思想
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 为了交互对象之间的松耦合设计而努力