SOLID 是 面向对象编程 和 面试对象设计 的五个基本原则,应用这五个原则能创建一个易于维护和扩展的软件系统。SOLID 可以指导代码重构和在迭代的过程中进行代码清扫,以使得软件源代码清晰可读和具有良好的扩展性。在测试驱动开发中是典型应用场景,并且也是敏捷开发和自适应软件开发基本原则的重要组成部分。
- 单一功能原则
对象应该仅具有一种单一功能
软件应该对扩展开放,但对于修改封闭
- 里氏替换原则
程序中的对象应该可以在不改变程序正确性的前提下被他的子类所替换。
如果它看上去像一只鸭子,并且像鸭子一样嘎嘎叫,但是需要电池 - 你可能错误的抽象了。
当一个子类实例能够替换器父类的实例时,它们之间才具有IS-A关系。
一个违反LSP的典型例子Square(正方形类)派生于Rectangle(长方形类)。如果一个正方形对象用于期望长方形的上下文中,可能出现意外,因为正方形的宽高不能独立修改。
多个特定客户端的接口要好于一个宽泛用途的接口
- 依赖反转原则
一个方法应该遵从依赖抽象而不是一个实例
想象一下,你会将一个灯直接焊接到插槽上吗?
参考开闭原则中的PayService::checkout依赖的接口而不是实现类就是遵循了依赖翻转原则