面向对象的五大设计原则(SOLID)

SOLID 原则

SOLID 是五大设计原则的首字母缩写, Robert C.Martin(Bob大叔)在21世纪初定义。当应用这些原则在我们的代码中时,这些原则可以帮助我们获得如下好处:

  • 可持续性
  • 扩展性

但在了解SOLID之前,我们先了解一下软件开发中的两个概念:耦合内聚

耦合

我们可以把它定义为一个类、方法或者任何一个实体直接与另一个实体连接的度。这个耦合度也可以被看作依赖的度。

内聚

内聚是一个系统里两个或多个部分一起执行工作的度,来获得比每个部分单独工作获得更好的结果。

想有一个高质量的软件,我们必须尝试低耦合高内聚,而SOLID原则可以帮助我们完成这个任务,如果遵循这些指引,我们的代码会更健壮、易于维护、有更高的复用性和可扩展性,同时可以避免每次变更都要修改多处代码的问题

下面分别拆看来看下。

单一职责原则(Single responsibility principle 简称: SRP)

一个类应该只有一个引起改变的原因

这个原则意味着一个类只能有一个职责并且只完成为它设计的功能任务。否则,如果我们的类承担的职责多余一个,那么我们的代码就具有高度的耦合性,并且会导致它对于任何改变都很脆弱。

好处:

  • 降低耦合性
  • 代码易于理解和维护

开闭原则(Open-closed principle 简称: OCP)

软件实体(类、模块、方法等)应该对扩展开放,对修改关闭

根据这一原则,一个软件实体可以很容易的扩展新功能而不必修改现有的代码。
open for extension: 添加新功能从而满足新的需求
close for modification: 扩展新的功能行为而不需要修改现有代码
如果我们应用这个功能,我们会有一个可扩展的系统且在更改需求的时候更不容易出错。我们可以用抽象多态来帮助我们应用这个规则。

好处:

  • 代码的可维护性和复用性
  • 代码会更健壮

里氏替换原则(Liskov substitution principle 简称: LSP)

程序里的对象都应该可以被它的子类实例替换而不用更改程序

好处:

  • 更高的代码复用性
  • 类的层次结构易于理解

接口隔离原则(Interface segregation principle 简称: ISP)

多个专用的接口比一个通用的接口好

这个原则定义了一个类绝不要实现不会用到的接口。不遵循这个原则意味着我们在实现里会依赖很多我们并不需要的方法,但又不得不去定义。

好处:

  • 系统解耦
  • 代码易于重构

依赖反转原则(Dependency inversion principle 简称: DIP)

高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象

依赖反转原则的意思是一个特定的类不应该直接依赖于另一个类,但是可以依赖这个类的抽象(接口)。
当我们应用这个原则的时候我们能减少对特定实现的依赖性,让我们的代码复用性更高。

好处:

  • 减少耦合
  • 代码更高的复用性

千万不要把这个原则与依赖注入混淆。依赖注入是一种设计模式,帮助我们应用这个原则来确保各个类之间的合作不设计相互依赖。

结论

遵循SOLID原则来构建高质量,易于扩展,足够健壮并且可复用的软件是非常有必要的。同时,我们也不要忘了从实际和常识处罚,因为有时候过度设计会使简单的问题复杂化!

posted @ 2024-03-05 09:55  huoxiao  阅读(49)  评论(0)    收藏  举报