首页 > 其他分享 >软件开发中的原则 - SOLID

软件开发中的原则 - SOLID

时间:2023-09-05 14:58:14浏览次数:41  
标签:软件开发 原则 SOLID 接口 一个 设计 单一 职责

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则,和具体阐述意义。

开发原则SOILD

面向对象的基本原则(solid)是五个,但是在经常被提到的除了这五个之外还有 迪米特法则和合成复用原则等, 所以在常见的文章中有表示写六大或七大原则的; 除此之外我还将给出一些其它相关书籍和互联网上出现的原则;

S单一职责SRP

Single-Responsibility Principle, 一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合,高内聚在面向对象原则的引申,将职责定义为引起变化的原因,以提高内聚性减少引起变化的原因。

定义

一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。(Every object should have a single responsibility, and that responsibility should be entirely encapsulated by the class.),即又定义有且仅有一个原因使类变更。

原则分析

1、 一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。
2、 类的职责主要包括两个方面: 数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现。
3、 单一职责原则是实现高内聚、低耦合的指导方针,在很多代码重构手法中都能找到它的存在,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验。# 优点

优点

降低类的复杂性,类的职责清晰明确。比如数据职责和行为职责清晰明确。提高类的可读性和维护性,变更引起的风险减低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

注意: 单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否合理,但是“职责”和“变化原因”都是没有具体标准的,一个类到底要负责那些职责? 这些职责怎么细化? 细化后是否都要有一个接口或类? 这些都需从实际的情况考虑。因项目而异,因环境而异。

例子

SpringMVC 中Entity,DAO,Service,Controller, Util等的分离。

标签:软件开发,原则,SOLID,接口,一个,设计,单一,职责
From: https://www.cnblogs.com/kisshappyboy/p/17679517.html

相关文章

  • O开放封闭原则OCP
    Open-ClosedPrinciple,OCP,对扩展开放,对修改关闭(设计模式的核心原则)定义一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭.意思是,在一个系统或者模块中,对于扩展是开放的,对于修改是关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能.而实现......
  • 软件开发原则
    软件开发原则原则介绍单一职责原则一个类或模块应该只负责一项任务或功能开闭原则软件实体(类、模块、函数等)应该对扩展开放,对修改关闭里氏替换原则子类应该能够替换其父类并且不会破坏程序的正确性接口隔离原则客户端不应该强制依赖它不需要的接口,即应该将......
  • 软件开发原子化 技术转型加速器
    在万物互联的时代,人均持有设备量不断攀升,设备和场景的多样性,每个设备都需要独立开发一个应用,先安装后使用、不同设备的能力不兼容等传统应用的短板逐步暴露出来。在此背景下,应用提供方和用户都迫切需要一种新的服务提供方式,使应用开发更简单、服务的获取和使用更便捷,原子化服务也......
  • 软件开发原子化 技术转型加速器
    在万物互联的时代,人均持有设备量不断攀升,设备和场景的多样性,每个设备都需要独立开发一个应用,先安装后使用、不同设备的能力不兼容等传统应用的短板逐步暴露出来。在此背景下,应用提供方和用户都迫切需要一种新的服务提供方式,使应用开发更简单、服务的获取和使用更便捷,原子化服务也就......
  • 正则的匹配原理以及优化原则
    正则之所以能够处理复杂文本,就是因为采用了有穷状态自动机(finiteautomaton)。那什么是有穷自动机呢?有穷状态是指一个系统具有有穷个状态,不同的状态代表不同的意义。自动机是指系统可以根据相应的条件,在不同的状态下进行转移。从一个初始状态,根据对应的操作(比如录入的字符集)执行状态......
  • 软件开发必读!华为云软件开发生产线CodeArts深度体验指南
    7月7日-9日,随着华为开发者大会2023的到来,华为云软件开发生产线CodeArts也走进了很多开发者的视野。开发者都比较好奇,什么是华为云CodeArts?CodeArts都有什么功能?在软件开发中能起到什么作用?CodeArtssnap是否有介绍的那般神奇?本文将为各位开发者详细介绍如何从了解学习到体验掌握华......
  • 设计模式学习1 设计原则
    设计原则1.开闭原则对扩展开放,修改关闭。在程序需要扩展的时候,不能去修改原有代码,实现一个热插拔的效果。为了使程序的扩展性好,易于维护和升级为了达到这样的效果,我们需要使用接口和抽象类2.里氏代换原则任何基类可以出现的地方,子类一定可以出现。也就是子类继承父类时,除了添......
  • 三位一体的软件开发成功之道
    在当今数字化时代,产品架构、应用架构和技术架构是构建现代化软件系统的关键要素。它们相互关联,共同影响着软件产品的功能、性能和可扩展性。本文将深入探讨产品架构、应用架构和技术架构之间的关系,并阐明它们在软件开发中的重要性。 一、产品架构产品架构是指在软件产品设计......
  • 软件开发常说的CI/CD是什么
    本文翻译自国外论坛medium,原文地址:本文翻译自国外论坛medium,原文地址:https://medium.com/gitconnected/basics-of-ci-cd-a98340c60b04任何软件项目的主要目标都是通过业务流程快速更新迭代来赚钱。我们越快向客户发布新版本,对我们的公司就约有好处。但如何快速实现版本更新迭代......
  • [读书笔记]架构设计原则
    架构设计面向的是不确定性,需要面对多种可能性时进行选择。选择的前提是知识和经验,知识是指有哪些技术、可用组件、实现思路等,这个决定了可选的范围。经验是对当前的业务、情形进行分析,能识别对当前的工作最有效的要素,能从选择空间里做出选择。多学习:扩大可选择的空间和范围多......