1. SRP 单一职责原则:用于指导类的设计
一个类只负责一组相关的事情,也就是说一个类有多个方法,但这些方法都是相关的。(适用于基础类,不适合用来约束基于基础类构建的复杂类)
2. LSP 里氏替换原则:用于指导类继承的设计
(1)子类必须实现或者继承父类所有的公有方法。
(2)子类每个方法的输入参数必须和父类一样,否则调用父类方法的调用者将调用不到子类的方法。
(3)子类每个方法的输出必须不比父类少,否则基于父类输出的处理将无法完成。
3. ISP 接口隔离原则:用于指导接口的设计
应该让消费者按需实现接口,而避免设计大而全的接口,导致消费者实现接口时必须要实现一些并不需要的方法。
4. DIP 依赖反转原则:用于指导如何抽象
高层模块不应该直接依赖低层模块,两者都应该依赖抽象层。也就是高层模块应该用接口做参数,而低层模块应该实现接口。
5. OCP 开闭原则:总的指导思想,符合其他几个原则时一般就符合 OCP 原则了
对扩展开放,对修改关闭,也就是说当提供者的功能有了替代实现时,消费者的代码不需要更改。(当提供者新增了一个全新的功能时,消费者当然还是需要新增调用)