1、 OCP(开闭原则),对扩展开放,对修改关闭;
2、 里氏代换原则(LSP),任何类的出现地方,子类一定可以出现(is-a)
3、 依赖倒转原则(DIP),尽量依赖于抽象,而不要依赖于具体,(为什么叫面向抽象编程,面向接口编程?就是这个原理)
4、 接口隔离原则(ISP):尽量提供可能小的单独接口,而不是提供大的总接口,使通信尽可能窄。(不用提供特别大的,分类)
5、 合成复用原则(CARP),尽量使用合成,聚合关系达到复用,而不要用继承关系达到复用。
6、 迪比特法则(LOD),一个软件实体应该尽可能少的与其它实体发生作用(一个类要调用好多类才能实现的话,这样如果有些类改变了会造成影响)