软件开发设计原则(软件开发设计原则国家级)

1、单一职责原则(Single Responsibility Principle,简称SRP )

核心思想:应该有且仅有一个原因引起类的变更问题描述:假如有类Class1完成职责T1,T2,当职责T1或T2有变更需要修改时,有可能影响到该类的另外一个职责正常工作。好处:类的复杂度降低、可读性提高、可维护性提高、扩展性提高、降低了变更引起的风险。需注意:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可以度量的,因项目和环境而异。

2、里氏替换原则(Liskov Substitution Principle,简称LSP)

核心思想:在使用基类的的地方可以任意使用其子类,能保证子类完美替换基类。通俗来讲:只要父类能出现的地方子类就能出现。反之,父类则未必能胜任。好处:增强程序的健壮性,即使增加了子类,原有的子类还可以继续运行。需注意:如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系 采用依赖、聚合、组合等关系代替继承。

3、依赖倒置原则(Dependence Inversion Principle,简称DIP)

核心思想:高层模块不应该依赖底层模块,二者都该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象;

说明:高层模块就是调用端,低层模块就是具体实现类。抽象就是指接口或抽象类。细节就是实现类。

通俗来讲:依赖倒置原则的本质就是通过抽象(接口或抽象类)使个各类或模块的实现彼此独立,互不影响,实现模块间的松耦合。

问题描述:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。

解决方案:将类A修改为依赖接口interface,类B和类C各自实现接口interface,类A通过接口interface间接与类B或者类C发生联系,则会大大降低修改类A的几率。

好处:依赖倒置的好处在小型项目中很难体现出来。但在大中型项目中可以减少需求变化引起的工作量。使并行开发更友好。

4、接口隔离原则(Interface Segregation Principle,简称ISP)

核心思想:类间的依赖关系应该建立在最小的接口上通俗来讲:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。问题描述:类A通过接口interface依赖类B,类C通过接口interface依赖类D,如果接口interface对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。需注意:接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情为依赖接口的类定制服务。只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。

5、迪米特法则(Law of Demeter,简称LoD)

核心思想:类间解耦。通俗来讲:一个类对自己依赖的类知道得越少越好。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。

6、开放封闭原则(Open Close Principle,简称OCP)

核心思想:尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化通俗来讲:一个软件产品在生命周期内,都会发生变化,既然变化是一个既定的事实,我们就应该在设计的时候尽量适应这些变化,以提高项目的稳定性和灵活性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月27日 上午9:35
下一篇 2023年4月27日 上午9:51

相关推荐

  • uniapp微信小程序设置字体为宋体

    标题:设置uniapp微信小程序字体为宋体 正文: 随着微信小程序的普及,越来越多的人开始使用它来进行各种活动。然而,由于不同的设备屏幕尺寸和分辨率不同,微信小程序的字体设置也成为…

    科研百科 2024年11月29日
    14
  • 工人工时管理app(企业工时管理软件)

    企业工时管理软件 随着企业的发展,企业工时管理已经成为了企业运营中不可或缺的一部分。传统的手动记录和管理工时的方式已经不能满足现代企业的发展需求,因此企业工时管理软件应运而生。 企…

    科研百科 2024年6月5日
    42
  • 优秀的项目经都在用的10大项目管理工具(项目经理常用的项目管理工具)

    01 头脑风暴法 使用头脑风暴法的好处可以很方便、迅速得到大量信息2调动参与人员的积极性,提高参与度容易产生很多创造性观点和解决方案容易发挥协调作用,容易达成一致头脑风暴的操作确定…

    科研百科 2023年10月27日
    77
  • 客户关系管理个人总结

    客户关系管理个人总结 客户关系管理(CRM)是一项非常重要的商业活动,它旨在提高客户满意度,增加销售额和利润。作为一名CRM专家,我认为客户关系管理不仅仅是一个工具或技术,更是一种…

    科研百科 2024年10月1日
    19
  • 如何使用甘特图

    如何使用甘特图 甘特图是一种用于展示项目或任务流程的工具,可以帮助您清晰地展示项目或任务之间的关系和依赖项。在本文中,我们将介绍如何使用甘特图来帮助您更好地管理项目或任务流程。 首…

    科研百科 2024年11月13日
    0
  • 集团 科技项目审计发现问题 分析和对策

    集团科技项目审计发现问题分析和对策 随着科技的不断发展,集团对科技项目的投入也在不断增加。然而,科技项目审计却发现了一些潜在的问题,这些问题可能会对集团的运营和发展产生负面影响。本…

    科研百科 2024年12月9日
    0
  • 讯飞星火首发“多情感超拟人合成”,安卓下载量在国内工具类通用大模型APP中排名第一

    文/赵东 4月26日,讯飞星火大模型V3.5(以下简称“讯飞星火”)春季上新。面向用户高效准确获取知识的痛点,科大讯飞发布首个长文本、长图文、长语音大模型,不仅能把各种信息来源的海…

    科研百科 2024年5月22日
    66
  • 代建项目管理系统

    代建项目管理系统:提升项目管理效率 随着现代建筑行业的快速发展,代建项目管理系统已经成为项目管理中不可或缺的一部分。一个好的代建项目管理系统不仅可以提高项目管理的效率,还可以降低项…

    科研百科 2024年7月14日
    40
  • 关于ERP,中小企业别纠结了(erp 中小企业)

    导读 中小企业是我国经济的重要组成部分,其发展水平直接影响着国家经济的发展。在当前复杂的经济环境下,中小企业发展处于一个不稳定的阶段。 一、中小企业发展现状 目前,中小企业主要存在…

    科研百科 2023年5月25日
    235
  • 科研软件

    科研软件科研软件最适合学生报考高校中,实力最强的大学是由科研机关、高等院校、理工类大学、科研类院校、科研类院校及相关院校研究,与他们的工作人员进行深入沟通,掌握研究学科需要的专业知…

    科研百科 2024年11月26日
    0