热门关键词:

成都软件开发编程中的SOLID原理

添加时间:2020-06-16 11:02:47

来源:

浏览:

在成都软件开发中,面向对象软件定制设计在编写灵活,可伸缩,可维护和可重用的代码方面起着至关重要的作用。使用OOD有很多好处,但是每个开发人员也应该了解SOLID原理,以便在编程中进行良好的面向对象设计。SOLID原则是由Robert C. Martin(也称为Bob叔叔)引入的,它是编程中的编码标准。该原则是以下五个原则的缩写。


单一责任原则(SRP)

开/关原则

里斯科夫的替代原则(LSP)

接口隔离原理(ISP)

依赖倒置原则(DIP)


SOLID原理有助于减少紧密耦合。紧密耦合意味着一组类彼此高度依赖,您应该在代码中避免这些类。与紧密耦合相对的是松散耦合,当您的代码具有松散耦合的类时,您的代码将被认为是好的代码。松散耦合的类可最大程度地减少代码更改,有助于使代码更可重用,可维护,灵活且稳定。现在让我们一一讨论这些原则...


1.单一责任原则:该原则规定“ 一个班级只有一个改变的理由 ”,这意味着每个班级都应该有一个单一的责任,一个工作或一个目的。以开发软件为例。任务被划分为不同的成员,例如前端设计师进行设计,测试人员进行测试,后端开发人员负责后端开发部分,然后我们可以说每个人都有一项工作或职责。

在大多数情况下,程序员不得不添加功能或新行为时,他们会在现有类中实现所有功能,这是完全错误的。这会使他们的代码冗长,复杂,并在以后需要修改某些内容时浪费时间。使用图层 在您的应用程序中,将God类分成较小的类或模块。


2.开放/封闭原则:该原则指出“ 软件实体(类,模块,功能等)应为扩展而开放,而为修改而封闭 ”,这意味着您应该能够扩展类行为,而无需对其进行修改。

假设开发人员A需要发布库或框架的更新,而开发人员B想要对其进行一些修改或添加一些功能,则允许开发人员B扩展由开发人员A创建的现有类,但开发人员B不应直接修改该类。 。使用此原理可以将现有代码与修改后的代码分开,从而提供更好的稳定性,可维护性,并最大程度地减少代码中的更改。


3. Liskov的代换原则: Barbara Liskov于1987年引入了该原则,并根据该原则“ 派生或子类必须替代其基类或父类 ”。该原则确保作为父类的子类的任何类都可以代替其父类使用,而不会发生任何意外行为。

您可以这样一种方式来理解它,即农民的儿子应该从父亲那里继承农业技能,并在需要时能够代替父亲。如果儿子想成为农民,那么他可以代替父亲,但是如果他想成为板球运动员,那么即使儿子和儿子都属于同一家庭等级,也可以肯定儿子不能代替父亲。

此原理的经典示例之一是具有四个边的矩形。矩形的高度可以是任何值,宽度可以是任何值。正方形是宽度和高度相等的矩形。因此,可以说我们可以将矩形类的属性扩展为正方形类。为此,您需要将子类(正方形)与父类(矩形)类交换以适合具有四个相等边的正方形的定义,但派生类不会影响父类的行为,因此如果您愿意它将违反《里斯科夫换人原则》。检查链接里斯科夫替代原理以获得更好的理解。


4.接口隔离原则:此原则是适用于接口而不是SOLID中的类的第一项原则,它类似于单职责原则。它指出“ 不要强迫任何客户端实现与其无关的接口 ”。在这里,您的主要目标是避免出现胖界面,而优先选择许多小型的特定于客户端的界面。您应该选择许多客户端接口,而不是一个常规接口,并且每个接口都应负有特定责任。

假设您进入餐厅,并且您是纯素食主义者。那家餐厅的服务员给了您菜单卡,其中包括素食,非素食,饮料和糖果。在这种情况下,作为客户,您应该拥有一张菜单卡,其中仅包含素食,而不包含您不食用的所有食物。在这里,菜单应针对不同类型的客户而有所不同。每个人的通用或通用菜单卡可以分为多个卡,而不是一个。使用此原理有助于减少副作用和所需更改的频率。


5.依赖倒置原则:在讨论本主题之前,请记住,依赖倒置和依赖注入都是不同的概念。大多数人对此感到困惑,并认为两者是相同的。现在在此要牢记两个关键点


高级模块/类不应依赖于低级模块/类。两者都应依赖抽象。

抽象不应依赖细节。细节应取决于抽象。

上面的几行仅说明,如果高级模块或类将更多地依赖于低级模块或类,则您的代码将紧密耦合,并且如果您尝试对一个类进行更改,则可能会破坏另一个具有风险的类在生产水平上。因此,始终尝试使类尽可能松散地耦合,并且可以通过抽象来实现。该原理的主要动机是将依赖关系解耦,因此,如果类A发生更改,则类B无需关心或知道更改。

您可以考虑电视遥控器电池的真实示例。您的遥控器需要电池,但不取决于电池品牌。您可以使用任何想要的XYZ品牌,它将起作用。因此,可以说电视遥控器与品牌名称是松散耦合的。依赖倒置使您的代码更具可重用性。


需要软件开发就找我们成都软件开发公司吧!

用户名 Name
评论 Comment

软件开发  相关内容

——
14

2021-07

OracleNetsuite的建设标题

到目前为止,我们已经为我们OracleNetsuite的标题创建了导航栏。完成标题的下一件事是在图像上方包含图像和文本,如下面的屏幕截图所示:让我们再次查看index.html 文件中标题的部分代码。代码中突出显示的部分显示了标题的图像菜单:要完成图像菜单,我们首先需要在 id … [了解更多]

14

2021-07

OracleNetsuite响应式和移动…

响应式网站:响应式网站是旨在适合所有类型的设备并调整网站布局以最适合屏幕尺寸的网站。无需制作任何其他设备版本的网站以适应小型设备。移动网站:移动网站是专为适应手机、平板电脑等特别小的设备屏幕而设计的网站。需要制作网站的桌面版本以适应移动设备特定的桌面屏幕。响应式网站和移动网站的区… [了解更多]

08

2021-06

OracleNetsuite ​Doc…

OracleNetsuitePython 提供了许多分发 Python 项目的方法。其中一种方法是使用一种称为 Docker 的重要技术。Docker 是一个开源应用程序,允许管理员使用容器创建、管理、部署和复制应用程序。它基本上是一个平台,使开发人员能够通过将应用程序放入容器中… [了解更多]

22

2021-05

OracleNetsuiteERP在公开…

财务负责人戴了两顶帽子:一是遵守法规,以确保公司的行为和会计正确无误,并遵守公司开展业务的不同司法管辖区的法规;二是遵守法规。一种战略,确保公司达到财务里程碑和成功指标。当一家公司上市时,包括通过特殊目的收购公司(SPAC)上市时,这两个角色尤其重要。Oracle NetSuit… [了解更多]

08

2021-03

星空RPA智能链接方案

公司财务人员中记账人员的工作内容:1、从钉钉中下载审批完成的8种审批类型的单据数据,包含合同付款、费用报销等2、记账人员根据付款的性质及费用归属,把记账分成6种形式:合同付款(工程、成本)、合同付款(其他)、非合同付款(工程、成本)、非合同付款(其他)、费用报销(工程、成本)、费… [了解更多]

关注

深信服

  • 地 址:成都市人民南路四段成科西路三号 863国家孵化园
  • 电 话:18215 660330
  • 手机:18215 660330
  • 传 真:18215 660330
  • 邮 箱:179001057@qq.com
  • 邮政编码:610000