SOLID 是让软件设计更易于理解、 更加灵活和更易于维护的五个原则的简称。这五条原则是在罗伯特·马丁的著作《敏捷软件开发: 原则、 模式与实践》 中首次提出的。
S 单一职责原则(Single Responsibility Principle)
修改一个类的原因只能有一个。 尽量让每个类只负责软件中的一个功能,并且将该功能完全封装在该类中。 这条原则的主要目的是减少复杂度。
O 开闭原则 (Open/closed Principle)
对于扩展,类应该是“开放”的;对于修改,类应该是“封闭”的。 本原则的主要理念是在实现新功能时保持已有代码不变。
L 里氏替换原则 (Liskov Substitution Principle)
当你扩展一个类时,记住你应该要能在不修改客户端代码的情况下将子类的对象作为父类对象进行传递。 这意味着子类必须保持与父类行为的兼容。 在重写一个方法时, 你要对基类行为进行扩展, 而不是将其完全替换。
- 子类方法的参数类型必须与其超类的参数类型相匹配或更加抽象
- 子类方法的返回值类型必须与超类方法的返回值类型或是其子类别相匹配。
- 子类中的方法不应抛出基础方法预期之外的异常类型。
- 子类不应该加强其前置条件。
- 子类不能削弱其后置条件。
- 超类的不变量必须保留
- 子类不能修改超类中私有成员变量的值
I 接口隔离原则 (Interface Sergregation Principle)
客户端不应该被强迫依赖于其不使用的方法。
D 依赖倒置原则 (Dependency Inversion Principle)
高层次的类不应该依赖于低层次的类。两者都应该依赖于抽象接口。抽象接口不依赖于具体实现。具体实现应该依赖于抽象接口。