开闭原则
对扩展开放,对修改关闭;再不修改原业务代码的前提下,扩展新功能。 ;
描述:开闭原则 是 面向对象设计的目的。应该尽量面向 抽象层(接口、抽象类等)开发
单一职责原则
主要针对功能提供方;根据业务将每一个类或者接口 提供尽可能小的粒度 的功能,最好一个或者一种 功能
There should never be more than one reason for a class to change
应该有且仅有一个原因引起类的变化
接口隔离原则
主要为功能使用方考虑,提供给他的接口 只是 他需要的接口;
Clients should not be forced to depend upon interfaces that they don't use.
客户端不应该被迫依赖于他们不使用的接口。
The dependency of one class to another one should depend on the smallest possible interface.
类间的依赖关系应该建立在尽可能小的接口上。
接口尽量细化,同时接口中的方法尽量少
描述:
接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:
- 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。
- 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。
迪米特法则
“不和陌生人说话”,又叫最少知识原则,只依赖和自己有关系的 类或者服务
描述:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。
依赖倒置原则
实现不能依赖抽象,面向接口编程
描述:核心思想:要面向接口编程,不要面向实现编程。
里氏替换原则
使用子类 替换 父类后 不影响原有功能;不重写父类方法,子类只新增方法
描述:里氏替换原则是面向对象设计的基石;子类继承父类,尽量 增加功能尽量新增方法,不要重写父类方法
组合复用原则
能依赖类或者接口 组合起来 实现功能,不要继承父类 实现功能;
描述:主要为了减少程序的 耦合度