首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计原则单一职责原则(SRP)

简介 单一职责原则是最重要的设计原则,也是最抽象的设计原则。小到函数,大到平台的设计,都可以使用单一职责原则来指导。...类与接口 当我们将功能从函数的粒度重构之后,每个函数只负责了自己的部分,已经符合了 SRP 原则,但是从类的角度来看,登录类承担了太多的功能。...增加校验规则需要修改登录类,增加登录后的功能也需要修改登录类,因此类也需要按照 SRP原则来进行重构。 在思考函数重构的过程中,我们已经对如何划分类有了思考。...没有事件,使用方就不知道如何响应;没有注册中心,使用方就不知道如何定制化;没有事件分发,模块就无法将事件通知到使用方。...后记 要做一个符合SRP 原则的设计是很困难的,需要我们在实践中总结经验。对一个领域有了充分的了解,我们才能更加游刃有余的应用SRP 原则。同时不要滥用 SRP原则,编程是门艺术,设计更是一门艺术。

82650

《设计模式》系列-SOLID设计原则

简写 全拼 中文翻译 SRP Single Responsibility Principle 单一责任原则 OCP Open Closed Principle...Inversion Principle 依赖倒置原则 单一责任原则SRP) 什么是单一责任原则?...责任是不是越单一越好? 我们在追求单一责任原则的时候,是不是把类或者模块划分的越细越好呢?答案是否定的。单一责任原则,将相同的功能放在一个类或者模块里,避免不同功能之间的耦合,提高代码的内聚性。...这一点和单一责任原则很像,但是他们俩并不是完全相同,单一责任原则针对的是模块、类和接口的设计原则,而接口隔离原则更加侧重于接口的设计。...如果接口使用者只是调用了接口的部分功能,那么就不符合单一责任原则了。

39250
您找到你想要的搜索结果了吗?
是的
没有找到

SOLID之SRP

单一职责原则 SRP,single responsibility principle SRP是所有原则中最简单的之一,也是最难正确运用的之一,也是我们日常中最常用的一个 不管是编码,重构,甚至当下流行的微服务中...理论上,团队可能只负责单一服务,因此服务绝对不是微小的 单一 从个人理解可以分为狭义与广义 狭义: 狭义只是从面向底层实现细节的设计原则 一个类而言,应该仅有一个引起它变化的原因 在日常中,在编写方法或者重构方法...,也是以这个为原则,即确保一个函数只完成一个功能。...在将大方法重构成小方法时经常会用到这个原则 广义: 相对狭义,适用的范围相对大些,不再是一个类,一个方法,亦或是一个原因 任何一个软件模块都应该只对某一类行为者负责 “软件模块”不再只是一个类,可以是一组紧密相关的函数和数据结构...如果一个类承担多于一个职责,那么引起它变化的原因就会有多个 在SRP中,职责定义为“变化的原因”,如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责 因此对于职责的定义需要结合具体业务

51320

设计模式学习--面向对象的5条设计原则单一职责原则--SRP

一、SRP简介(SRP--Single-Responsibility Principle): 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。...二、举例说明: 违反SRP原则代码:  modem接口明显具有两个职责:连接管理和数据通讯; interface Modem {     public void dial(string pno);    ...优点: 消除耦合,减小因需求变化引起代码僵化性臭味 四、使用SRP注意点: 1、一个合理的类,应该仅有一个引起它变化的原因,即单一职责;  2、在没有变化征兆的情况下应用SRP或其他原则是不明智的; ...3、在需求实际发生变化时就应该应用SRP原则重构代码;  4、使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码;  5、如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用...Facade或Proxy模式对代码重构

741100

敏捷软件开发 原则_敏捷方法论

传统的瀑布式开发 瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。...面向对象的设计原则 SRP 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。 OCP 开发-封闭原则 软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。...应用设计原则去诊断问题。 应用适当的设计模式去解决问题。 敏捷开发方法框架 Scrum 极限编程(XP) 其中,Scrum是使用最普遍的敏捷开发方法框架。...何时重构 重构应该随时随地进行。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

36130

The Clean Architecture in PHP 读书笔记(三)The Clean Architecture in PHP 读书笔记(三)

Martin提出,这些原则主要解决了下面两个问题: 类应该怎么设计?彼此之间如何交互 我们如何组织这些类 介绍第一个原则单一职责 单一职责原则 单一职责,要想理解这个原则,我们先来看下什么是职责?...我们写出来的类,如果会因为多于一种原因而去修改,那就不符合单一职责。另一角度看单一职责是从类的对外表现去看,如果类表现出不止一种行为,则也违反了SRP。...那介绍了这么多SRP,最重要的问题是: 为什么SRP那么重要? 关键点还是SRP有助于我们实现解耦,去耦是贯穿全文的主题。 总结起来:类越小,越容易测试,越容易重构,也更不容易出现缺陷。...总结起来就是:如果一个类使用了一个接口的一个实现类,那么该接口的任何其他实现类也可以被这里直接使用,不用做出任何修改。 为什么LSP那么重要呢? LSP使得我们重构代码变的有理可循。...SOLID原则使得我们的代码更易扩展、重构和测试,下面会继续解耦的第三个工具:依赖反转。

32420

面向对象设计的SOLID原则

在本文中,我们将深入探讨SOLID原则,包括单一职责原则 (SRP)、开放封闭原则 (OCP)、里氏替换原则 (LSP)、接口隔离原则 (ISP) 以及依赖反转原则 (DIP)。...二、单一职责原则 (Single Responsibility Principle, SRP) 什么是单一职责原则 单一职责原则强调一个类或模块应该只有一个原因来发生变化。...每个类有一个责任: 每个类或模块应该专注于完成单一的任务或责任。这意味着类中的方法和属性应该与该责任密切相关,而不应包含与其他责任无关的内容。 分离关注点: SRP强调将不同的关注点分离开来。...一个只负责一个责任的类可以更容易地进行单元测试,因为测试可以专注于验证该类的特定行为。 提高可维护性: 遵循SRP原则通常会导致更具可维护性的代码。...您可以在不同的项目或不同的上下文中使用具有单一职责的模块,而无需担心其它不相关的功能。

23030

关于编程,你不会连这些原则都不知道吧?

1.单一职责原则SRP) 2.开放封闭原则(OCP) 3.里氏替换原则(LSP) 4.接口隔离原则(ISP) 5.依赖倒置原则(DIP) 今天,小二哥主要是把这几个原则之间的关系,大概串一串,方便大家进一步理解...S.O.L.I.D原则内部关联关系 S.O.L.I.D各个原则的关系,可以大致这样关联。 单一职责是所有设计原则的基础,开闭原则是设计的终极目标。...一个类或模块只负责完成一个独立的功能或任务,就能帮助我们将复杂的系统拆分成独立的组件,使得每个组件都具有清晰的责任和功能。...我们只需创建一个具有扩展功能的新类,并让这个新的类是原本被使用的功能 类的衍生类即可。这样就能顺利的完成替换,实现功能的扩展。 接口隔离原则用来帮助实现里氏替换原则,同时它也体现了单一职责。...其他 在软件设计原则上,也不止上述的S.O.L.I.D原则。但这几个原则是被广大小伙伴们讨论的。它们不仅有助于日程项目开发和重构,而且有助于理解其他的软件设计原则

11630

如何写出高质量的代码

简称 英文名 中文名 SRP The Single Responsibility Principle 单一责任原则 OCP The Open Closed Principle 开放封闭原则 LSP The...Inversion Principle 依赖倒置原则 S:单一责任原则,注重的是职责,主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节。...O:开闭原则,对新增开放,对修改关闭。主要是用多态性,面向接口面层。 L:里氏替换原则,父类可用的情况下,子类也可以使用。也就是说子类条件更严格。...2.如何做设计 软件为谁设计 前端使用者 后端使用者 外部使用者 + 内部使用者 主动使用者 + 被动使用者 如何获得设计能力 第1阶段,读源码 持之以恒的克勤精神,天下断无不成功之事...设计模式重构 大风险 母子函数法 小风险 领域领域驱动设计 架构重构-降低风险 使用微服务。

57820

SOLID原则(OOD&OOP)

S--单一责任原则(SRP) --Single Responsibility Principle O--开放封闭原则(OCP)-- Open-Closed Principle L--里式替换原则(LSP...Dependency Inversion Principle 一、单一责任原则(SRP) 单一责任原则指出当需要修改某个类的时候原因有且只有一个。...后来需要增加正方形,就继续使用长方形的类,使用的时候长=宽。这一种情况违背了SRP原则,一个类只负责一件事情,这个时候应该新建一个正方形的类。...二、开放封闭原则(OCP) 开放封闭原则指的是程序模块应该遵循关闭修改,开放扩展。这里与单一责任原则很好的联系在了一起。一个类只负责一件事情。...六、总结 SRP 单一职责原则 一个类应只负责一件事情 OCP 开放封闭原则 封闭修改,开放扩展 LSP 里氏替换原则 一个对象可由其子类代替 ISP 接口分离原则 客户不应被强迫依赖它不使用的方法 DIP

89741

JavaScript-设计模式·设计原则和编程技巧

设计原则通常指的是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、合成复用原则和最少知识原则。...单一职责原则 设计模式中的 SRP 原则 单一职责原则SRP)的职责被定义为“引起变化的原因”。如果我们有两个动机去改写一个方法,那么这个方法就具有两个职责。...SRP 原则体现为:一个对象(方法)只做一件事情。 SRP 原则在很多设计模式中都有着广泛的运用,例如代理模式、迭代器模式、单例模式和装饰者模式。...如果两个对象拥有相同的方法,则有很大的可能性它们可以被相互替换使用。 代码重构 模式和重构之间有着一种与生俱来的关系。从某种角度来看,设计模式的目的就是为许多重构行为提供目标。...这里提出一些重构的目标和手段: 提炼函数 合并重复的条件片段 把条件分支语句提炼成函数 合理使用循环 提前让函数退出代替嵌套条件分支 传递对象参数代替过长的参数列表 尽量减少参数数量 少用三目运算符 合理使用链式调用

37130

PHP设计模式——状态模式

对于我们来说,它甚至看起来都不是面向对象的,最糟糕的是它明显违反了单一责任原则SRP)。此类更改的原因有多种。当你对快乐状态,温和状态或愤怒状态有其他逻辑时。...在这种情况下,我们就需要使用状态模式(State Pattern)。状态模式使我们可以封装变化的部分,即sayHi函数。具体取决于支持代表的心情。...supportRep->numOfCalls>5&&$this->_supportRep->numOfCalls<10) { Rep)); )); } } 最后,我们来重构下支持代表的类...它不再违反单一责任原则SRP)。三个状态类仍然可以通过组合来更改主要类的状态。 现在,SupportRep变得更加整洁,如果需要添加任何其他逻辑,则可以将其作为单独的状态类来完成。

46710

Java开发人员的SOLID设计原则简介

S代表SRP单一责任原则)。基本思想是应用关注点分离,这意味着您应该尝试将关注点分离到不同的类中。一个类应该关注一个问题、一段逻辑或一个域。当域、规范或逻辑更改时,它应该只影响一个类。   ...实施SRP前   下面,我们违反了SRP。这堂课 VehicleServiceResource 实现了两种不同的事物,并以两种角色结束。如我们所见,这个类有两个注释来标记它的用法。   ...需要对CalculateHicle方法进行重构和代码修改。   ...界面分离原则由罗伯特C马丁在为施乐咨询时定义。他将其定义为:   “不应强迫客户端依赖于它们不使用的接口。”   ISP说我们应该把我们的接口分成更小更具体的接口。   ...对于当前的实现,需要重构,因为Emailer类只使用SpellChecker类。   一个简单的解决方案是为要实现的不同的拼写检查器创建接口。

21430

C++代码重构和设计模式:改善代码结构和可维护性

对于使用C++编写的代码而言,合理的重构和设计模式的应用可以帮助我们改善代码的结构和可维护性。本文将介绍C++代码重构的基本原则,并探讨一些常见的设计模式在代码重构中的应用。为什么进行代码重构?...代码重构的基本原则在进行代码重构时,有一些基本原则需要遵循:单一职责原则 (SRP)单一职责原则要求一个类或模块只应该有一个单一责任。...通过遵守SRP,我们可以使代码更加模块化和易于维护。开放封闭原则 (OCP)开放封闭原则要求系统中的模块对于扩展是开放的,而对于修改是封闭的。...在代码重构中,常见的一些设计模式可以帮助我们改善代码结构和可维护性,例如:**工厂模式 (Factory Pattern)**:通过工厂方法来创建对象,将对象的创建和使用分离,降低代码的耦合性,提高可维护性和扩展性...代码重构需要遵循一些基本的原则,如单一职责原则、开放封闭原则、里氏替换原则和依赖倒置原则。此外,设计模式在代码重构中起到了重要的作用,例如工厂模式、观察者模式、策略模式和装饰器模式等。

22110

修复糟糕的代码气味

万能对象:一个类具有太多的功能,违背了单一责任原则。这个类会变得复杂,难以测试和维护。 解决方法:根据任务拆分成多个类。 2. 重复代码:相同的代码块多次出现,增加了冗余,并且增加维护难度。...,违反了SOLID设计的单一责任原则SRP, Single Responsibility priciple)。...这使得每个类在遵守 SRP 的同时专注于特定任务。...我们应该致力于使每种方法都负责一项单一的任务。...通过重构我们的代码,以便按顺序检查每个条件,我们可以创建一个更扁平、更易于阅读和理解的结构。如果将复杂的逻辑与条件混合在一起,则可能值得将逻辑抽象为单独的函数,以使条件更易于阅读。

5810

浅谈 SOLID 原则的具体使用

本篇文章我将谈谈 SOLID 原则在软件开发中的具体使用单一职责原则SRP单一职责原则SRP)表明一个类有且只有一个职责。一个类就像容器一样,它能添加任意数量的属性、方法等。...任意小的改变都将导致这个单一类的变化。当你改了这个类,你将需要重新测试一遍。如果你遵守 SRP,你的类将变得简洁和灵活。...每一个类将负责单一的问题、任务或者它关注的点,这种方式你只需要改变相应的类,只有这个类需要再次测试。SRP 核心是把整个问题分为小部分,并且每个小部分都将通过一个单独的类负责。...接口隔离原则(ISP) 接口隔离原则(ISP)表明类不应该被迫依赖他们不使用的方法,也就是说一个接口应该拥有尽可能少的行为,它是精简的,也是单一的。...显然,这违反了接口隔离原则。 你需要将这个功能重构: ? 新的设计分成两个接口。

1K90

面向对象设计的SOLID原则

SRP The Single Responsibility Principle 单一责任原则 OCP The Open Closed Principle 开放封闭原则 LSP The Liskov Substitution...单一责任原则: 当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。...换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 ? 开放封闭原则 软件实体应该是可扩展,而不可修改的。...接口分离原则 不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。 ? 这几条原则是非常基础而且重要的面向对象设计原则。...正是由于这些原则的基础性,理解、融汇贯通这些原则需要不少的经验和知识的积累。上述的图片很好的注释了这几条原则

1.1K60

6个重构方法提升80%的代码质量

在走读了一些代码之后,发现了一些代码质量普遍存在的问题,以下是其中的前五名: 1、臃肿的类:类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一原则SRP)”的理解。...技术性的,却没有提及相关领域的方法 6个处理上面代码异味的重构方法(手法) 以下是6个可以用来帮助你解决80%(80-20原则)的代码质量问题的重构方法,并能帮助你成为一个更优秀的开发者。...另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类的成员方法的成员方法。 这些方法也应该被迁移到合适的类中。...用符号常量替换魔法数字:对于有意义的并且到处被使用的字面常量,应该为它们分配一个命名常量。这能大大增强代码可读性和可理解性。 重命名方法:正如上面提到的,模糊不清的方法名会影响代码的可使用性。...有趣的是,这种重构方法看起来似乎非常容易理解,但是常常被许多开发者忽视,虽然在Eclipse这种IDE的refactor菜单项中经常出现这一项。

64130

减少软件开发中的耦合:更简洁代码的策略

接下来,我们将介绍一系列有效的策略,包括模块化设计、接口隔离、依赖注入和单一职责原则等。最后,我们将提供一些实践建议,以帮助你在实际项目中应用这些策略。图片什么是耦合?...接口隔离原则(ISP)接口隔离原则(Interface Segregation Principle, ISP)是指将一个大型接口拆分为多个小型接口,使得客户端只需要依赖于它所使用的方法所在的接口。...单一职责原则SRP单一职责原则(Single Responsibility Principle, SRP)是指一个类或模块应该只负责一个功能。...遵循单一职责原则可以减少类或模块之间的耦合度,提高代码的可维护性。示例:订单处理假设我们有一个OrderProcessor类,负责处理订单。...实践建议下面是一些建议,可以帮助你在实际项目中应用上述策略:重构时降低耦合:在重构过程中,可以通过上述策略降低耦合,提高代码质量。

50840

漫谈模式之违反S.O.L.I.D设计原则的示例

单一职责原则含义单一职责原则(Single Responsibility Principle,SRP):一个类只负责一个功能领域中的相应职责或可以定义为:就一个类而言,应该只有一个引起它变化的原因。...违反SRP原则的示例在这个示例中,Person类包含了一个名为Wallet的成员变量,并且该类还包含了两个方法来添加和删除钱包中的金额。...开闭原则意图开闭原则就是说对扩展开放,对修改关闭。违反OCP原则的示例如果在一个类中使用了switch语句来判断不同的情况,当需要添加一个新的情况时,必须修改源代码,这是违反OCP的。...接口隔离原则意图每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。...符合DIP原则的示例为了遵循DIP原则,我们需要对这个示例进行重构。一种解决方法是使用依赖注入,将SmtpClient对象作为构造函数参数传递给EmailService类。

66160
领券