单一职责原则
Single Responsibility Principle(SRP)
每一个接口就承担一个责任(或者说是一类的责任),尽量做到只有一个原因引起变化
ps:电话机通话的过程可以分为 ,拨打电话->通话->挂断电话
这里拨打 和 挂断 都是物理层面的可以做一个接口
通话的过程,是通讯层面的可以是移动也可以是联通,可以做一个接口
里氏替换原则
代码中有基类的地方,一定可以用子类去替换,当然,反过来不成立
依赖倒置原则
- 高层模块不依赖底层模块,两者都应该依赖他的抽象类
- 抽象类不应该依赖细节
- 细节应该依赖抽象类
用java解释
- 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过
接口或抽象类产生的; - 接口或抽象类不依赖于实现类;
- 实现类依赖接口或抽象类。
接口隔离原则
- 客户端不应该依赖他不需要的接口
- 类间的依赖关系要建立在最小的接口上
通俗的讲就是简化接口,一个接口中不要有过多的方法
ps: 比如一个接口中有10个方法,他们都是属于同一个职责的,但是用户权限不一样能用的方法不一样,所以这个接口在 单一职责原则
中是合理的,但是他不符合接口隔离原则.
迪米特法则
一个对象应该对其他对象有最少的了解。
通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调
用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。
类只和直接的朋友通信:
朋友类:出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类朋友之间也需要有距离:
一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大,所以要尽量少的发布public 方法,多用private是自己的就是自己的:
如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中
开闭原则
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭