单一原则(Single Responsibility Principle):一个类或者一个方法只负责一项职责
不同角度看可能不算单一,比如你在红警中,造车就是一个单一职责,但是你对做车的来说,这就不是一个单一职责,就可能还要分为造轮子、造车门。
里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功能
依赖倒置原则(dependence inversion principle):面向接口编程(通过接口作为参数实现应用场景)
抽象就是接口或者抽象类,细节就是实现类
上层模块不应该依赖下层模块,两者应依赖其抽象
抽象不应该依赖细节,细节应该依赖抽象
通俗地说就是变量或者参数,尽量使用抽象类或者接口。比如你传参尽量使用List,而不是ArrayList,这样以后你既可以传ArrayList,也可以传LinkedList。
比如JDBC就是很典型的依赖倒置原则
接口隔离(interface segregation principle):建立单一接口(扩展类也是一种接口,一切皆接口)
定义:
简单理解:复杂的接口,根据业务拆分成多个简单接口(对于有些业务的拆分多看看适配器的应用)
接口的设计粒度越小,系统越灵活,但是相应的结构复杂性也提高,开发难度变大,维护性降低
迪米特原则(LOD law of demeter):最少知道原则,尽量降低类与类之间的耦合,一个对象应该对其他对象有最少的理解。说白了就是低耦合。鼠标和电脑是有一点耦合的,耦合我们把它提升到概念上,具体的对象没有任何的耦合,只是概念上有耦合,电脑需要一个鼠标,但是具体的电脑和鼠标对象,是没有耦合的。生产电脑的时候不需要考虑生产的鼠标,生产鼠标也不需要考虑生产的电脑。
开闭原则(open closed principle):对扩展开放,对修改闭合
什么叫扩展?我鼠标坏了,直接把鼠标拔了然后换一个就可以了。什么叫修改?每次打开电脑里面,接上鼠标然后等鼠标坏了又要重新打开电脑里面拔了再接一个鼠标。所以要扩展,不要改变(修改)父类的功能。