迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
依赖倒转原则:A高层模块不应该依赖低层模块,他们都应该依赖抽象,B抽象不应该依赖细节,细节应该依赖抽象。
里氏代换原则:子类必须能够替换掉他们的父类型。
单一职责原则:就一个类而言,应该仅有一个引起他变化的原因。
开放封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。
合成/聚合复用原则:尽量使用合成聚合,尽量不要使用类继承。