1. 单一职责原则(SRP)
定义:对于一个类,有且仅有一个引起它变化的原因。
通俗讲就是我们不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会导致类的行为功能发生变化。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到破坏。我们要做的就是要分离这种多职责的变化,从而降低耦合度。
2. 开放封闭原则(OCP)
定义:一个软件实体应该对扩展开放,对修改关闭。
开放封闭有两个含义,一个是对于拓展是开放的,另一个是对于修改是封闭的。一个软件在生命周期内总要面对需求的变化,那么对于开发者来说怎么处理变化的需求,在实际当中往往是新需求一来,我们就要把类重新改一遍, 这显然是令人头疼的。开闭原则告诉我们的是,尽量通过扩展软件的实体来实现变化,而不是通过修改已有的代码来完成变化。 可以说开闭原则是对软件实体的未来变化的一种约束性的原则。
3. 里氏替换原则(LSP)
定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。
凡是父类出现的地方子类就可以出现,而且替换为子类也不会产生任何错误和异常。但是,反过来就不行,有子类出现的地方,父类不一定能适应。
4. 依赖倒置原则(DIP)
定义:高层模块不应该依赖低层模块,两个都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
面向抽象编程,而不是面向实现编程。如数据库连接只是定义了接口
5. 接口隔离原则(ISP)
定义:一个类对另一个类的依赖应该建立在最小的接口上,客户端不应该依赖它不需要的接口。
6. 迪米特法则(LOD)
定义:一个软件实体应当尽可能少地与其他实体发生相互作用。
通过中间代理类减少两个类之间的耦合。