1. SPR 单一功能原则
引起类变化的因素永远不要多余一个,保证类的有且只有一个责任。
2. OCP 开闭原则
对扩展开放,对修改闭合
3. LSP 里式替换原则
当子类的实例能替换任意一个父类的实例是,他们之间才具有 IS-A 关系
子类可以扩展父类的功能,但是不能重写父类已经定义了的功能
4. ISP 接口隔离原则
不让强迫客户端(泛指调用者)去依赖那些他们不使用的接口
5. 依赖反转原则
* 高层模块不应该依赖底层模块,双方都应该依赖其抽象
* 抽象不应该依赖于细节,细节应该依赖于抽象