一、单一职责原则
一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中
二、开闭原则
软件实体应该对扩展开放,对修改关闭
三、里氏代换原则
所有引用基类的地方必须能透明的使用其子类(应该将父类设计会抽象类或接口,让子类继承父类或实现父接口)
四、依赖倒置原则
高层模块不应该依赖于底层模块,他们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象
五、接口隔离原则
客户端不应该依赖哪些它不需要的接口。
六、合成复用原则
优先使用对象组合,而不是继承来达到目的。
七、迪米特法则
每一个软件单位对应其他单位都只有最少的知识,而且局限于哪些与本单位密切相关的软件单位