1.开放封闭
软件实体(类,模块,函数等)应该可以扩展,但是不可修改。
通俗理解:对扩展开放,对修改封闭!在添加新功能/产品时,尽量少的修改原代码或类,保证直接添加新类/方法即可完成。
2.单一职责
就一个类而言,应该仅有一个引起它变化的原因。
通俗解释:一个类或方法,尽可能只完成一个功能。
3.里氏替换
子类型必须能够替换掉它们的父类型。
4.依赖倒转
高层模块不应该依赖低层模块。
两个都应该依赖抽象。
抽象不应该依赖细节,细节应该依赖抽象。
通俗解释:最好面向接口编程。
5.高内聚低耦合
尽量少的接口,在同一个类/方法中,实现所有的功能
6.迪米特法则
如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。
如果其中一个类需要调用另一个类中的方法的话,可以通过第三者转发这个调用。