1. 开闭原则
开放扩展 关闭修改, 强调用抽象构建框架, 用实现扩展细节
2. 依赖倒置原则
高层模块不应该依赖底层模块, 二者都应依赖其抽象
抽象不能依赖细节, 细节应该依赖抽象
就可以降低类与类间的耦合
3. 单一职责
一个类/方法 只做一件事
4. 接口隔离原则
使用多个专门的接口, 而不全部依赖于总接口, 客户端不应该依赖它不需要的接口
5. 迪米特法则
一个对象对其他对象保持最少的了解
6. 里是替换原则
子类可以替换父类的功能, 但不能改变父类原有的功能
7. 合成复用原则
尽量使用对象组合或对象聚合的方式实现代码复用