1. 单一职责

类的职责单一,对外只提供一个功能,而引起类变化的原因都应该只有一个。

2. 开闭

类的改动是通过增加代码进行的,而不是修改源代码。

3. 里氏代换原则

任何抽象类出现的地方都可以用他的实现类替换,实际就是虚拟机制,语言级别实现面向对象功能。

4. 依赖倒转原则

依赖于抽象接口,不要依赖具体的实现类,也就是针对接口编程。