单一职责原则
- 一个类应该只负责一项职责。
- 提高类的可读性,可维护性。
- 只有逻辑足够简单时,才可以在代码级违反单一职责原则,当类少的时候,可以在方法层面上体现单一职责原则。
接口隔离原则
客户端不应该依赖它不需要的借口,一个类应该依赖最小的接口。实现这个原则,会出现很多的接口。
依赖倒转原则
- 高层模块爱不应该依赖底层模块,它们都应该依赖抽象模块。
- 抽象模块不应该依赖细节,细节模块应该依赖抽象模块。
-
面向接口原则,实现方式由三种:
-
在抽象方法中传入接口,具体使用的时候传入具体的实现类。
- 让某个接口作为类的成员变量,在类的构造方法中传入接口,具体使用的时候传入具体的实现类。
- 让某个接口作为类的成员变量,在类的setter方法中传入接口,具体使用的时候传入具体的实现类。
- 变量声明的类型,尽量是接口或者是抽象类,有利于程序的扩展。
里氏替换原则
- 使用基类的地方,必须能使用其子类的对象。
- 子类中尽量不要重写父类的方法。
- 尽量让一些类去继承基类,而继承基类的那些类之间进行互相的组合(互为成员变量啥的)。
开闭原则
开:能易于扩充。 闭:对使用方屏蔽细节。 基本思想就是将一些产品类,继承某个基类或者是实现接口,以实现在扩展产品的时候直接添加就好,在使用的时候也和之前的一致。
迪米特法则
- 一个类应该与其他类保持较少的联系,以降低耦合度。
- 又名最少知道原则,类A中有个类B的对象,类B中应该把相关的东西封装好,让A仅简单调用就能完成功能吗,而不是A中也涉及B的逻辑。
合成复用原则
尽量使用合成/聚合的方式,而少使用继承。使用某个方法使用到类B的方法可以将B的对象传入(某个方法或者是构造方法),或者把B类的对象作为成员变量。
总结
- 提炼共同之处。
- 面向接口编程。
- 高内聚低耦合