具有 CRUD 方法的类违反了单一职责原则?

2024-01-08

我试图理解单一责任原则。我有以下问题。

  1. 单一职责原则 (SRP) 规定,永远不应该 班级变更的原因不止一个。 通常我们的Resource、Service和Repository类有 创建、读取、更新和删除方法。我们正在将每个班级更改为 修改任何这些操作的代码。是否违反SRP?我们需要 每个动作都有单独的类?

  2. 当我运行声纳 lint 时,我看到了以下消息。

    类不应该与太多其他类耦合。

    这里我使用 spring DI 注入其他类。有没有限制 依赖的数量?

我可能错过了这个概念的关键。请推荐一个很好的资源,通过示例更好地理解这个概念


SRP 规定该类应该只做一件事,例如在存储库的情况下持久保存实体。我猜你在这里混淆了“类”和“对象”:如果你有几种可以改变类的方法object的声明这可能符合 SRP。然而,存储库的唯一原因class改变应该与其目的有关,即在这种情况下持久化或检索实体。

维基百科文章关于单一责任原则 https://en.wikipedia.org/wiki/Single_responsibility_principle说得很好。

对于你的第二点:一个类可以拥有的依赖项的最大数量是不存在的,但如果有很多依赖项,则可能是设计缺陷的标志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 CRUD 方法的类违反了单一职责原则? 的相关文章

随机推荐

  • 在 Bash 中,如何在字符串中插入 $(...) ?

    我正在尝试编写一个 Bash 脚本 在我的实时站点的数据库上执行 mysqldump 然后将转储添加并提交到 Git 存储库 这是我到目前为止所拥有的 存储在 sh 文件中 该文件由crontab https en wikipedia or
  • Xamarin 链接 SDK 和 UserAssemblies:膨胀类 android.support.v7.widget.FitWindowsFrameLayout 时出错

    我的应用程序无需链接即可运行 当我仅选择 Sdk Assemblies 时 它也可以正常工作 它在调试模式下也能正常工作 但如果我选择链接 SDk 和 UserAssemblies 它就会开始失败 我检查了日志 只找到了下面的内容 我到处谷
  • 如何在 perl 中使用 Qt GUI(使用 Qt Designer 创建)?

    我已经在 Qt Designer 中创建了 Qt GUI 并将其编译 使用 puic4 到 gui pm 现在 我想在我的 Perl 应用程序中使用它 但我陷入困境 因为我不知道如何创建窗口对象 我在 start pl 中有以下代码 use
  • `—` 或 `—` HTML 输出有什么区别吗?

    mdash or 8212 这些有区别吗 其中一个比另一个得到更好的支持吗 SGML 解析器 或 XHTML 情况下的 XML 解析器 可以处理 8212 无需处理 DTD 这对浏览器来说并不重要 因为它们只是吸食标签汤 同时 mdash
  • 多选,Jquery:检查我的多选是否至少应选择一个选项

    您好 我将总结我的问题 希望您能理解 主要目标 在点击选择按钮之前检查是否至少选择了一个选项 否则 如果在没有选择至少一个选项的情况下单击选择按钮 则会显示一条消息 请选择至少一个选项 Purpose 我的其他代码中有一些原因需要一个选择按
  • 在用户定义函数中使用 step() 时丢失对象错误

    5天了还是没有回复 从西蒙的评论中可以看出 这是一个可重现且非常奇怪的问题 似乎只有当具有非常高预测能力的逐步回归被包装在函数中时才会出现这个问题 我已经为此苦苦挣扎了一段时间 任何帮助将不胜感激 我正在尝试编写一个运行多个逐步回归并将其全
  • Django 分页,包含下一个、上一个、计数

    我正在尝试进行分页并阅读此链接 使用 API View 在 Django Rest Framework 中分页 https stackoverflow com questions 29071312 pagination in django
  • Firebug 控制台中的对象

    这是我发布的问题的扩展here https stackoverflow com questions 11750145 javascript trouble using for in to iterate through an object
  • 如何获取正在运行的占用 100% cpu 的 java 程序的完整堆栈跟踪?

    我确实有一个詹金斯实例 它陷入某种无限循环中 没有任何可见的活动 我可以得到pid那么如何生成可用于错误报告的跟踪呢 我在linux上运行 尝试用jstack http download oracle com javase 1 5 0 do
  • 从 Illuminate\Html 切换到 Collective\Html,未找到类“Illuminate\Html\HtmlServiceProvider”

    我更新了composer json删除照亮 html并添加 require laravelcollective html 5 1 我从中删除了提供者 别名app php对于 Illuminate Html 并添加了替换项 Collectiv
  • 如何通过 moment.js 获取最近的日期?

    日期列表 const datesToBeChecked 2020 07 06 2020 07 13 2020 07 20 检查日期 const dateToCheckFor 2020 07 07 如何使用 moment js 获取日期数组中
  • PHP 字符串转整数异常

    我在 HackerRank 上遇到一个问题 第 16 天 异常 字符串到整数 https www hackerrank com challenges 30 exceptions string to integer 简而言之任务是 读取一个字
  • Laravel 将 http 添加到 url

    Laravel 5 0 中是否有一个助手可以自动将 http 添加到没有它的 url 中 这与 codeigniter 类似prep url可以找到的here https ellislab com codeigniter user guid
  • 如何在 JavaScript 中动态创建 HTML 页面

    是否可以用 JavaScript 动态创建完整的 HTML 页面 基本上 我正在创建一个 HTML 编辑器在浏览器中我想要做的是将 HTML 代码放在屏幕顶部的文本区域中 并在屏幕底部的 HTML 页面预览中 问题是它不仅仅是小的 HTML
  • C# JSON 自定义序列化

    有没有一种方法 库允许我自定义类似于 GSON 自定义序列化器的 JSON 序列化 这是我想要得到的 这个对象 KeyValuePair 年龄 10 myAge 通常会被序列化为 我的年龄 关键 年龄 价值 10 虽然我希望它像这样序列化
  • 矢量与圆锥的交点

    我有一个向量A定义为 Ao t Ad 我还有一个带有顶点的圆锥体 圆锥尖 V 轴方向D 基半径R和身高H 如何找到向量和圆锥之间的交点 我正在使用 glm 进行数学计算 Here s a simple illustration 我没有处理光
  • 按频率对 Javascript 数组进行排序,然后过滤重复项

    获取 javascript 数组 按值的频率排序 然后过滤唯一值的优雅方法是什么 So apples oranges oranges oranges bananas bananas oranges becomes oranges banan
  • 关注有值的输入字段

    我专注于 jQuery 的输入字段 input text focus 输入字段中已有一些文本值 当我聚焦时 光标在最后一个字母之后闪烁 我如何将光标放在第一个字母之前 你可以使用我为你创建的这个小插件 修改自这个脚本 http blog v
  • 如何在CoordinatorLayout中的Viewpager下面获取Adview

    此刻AdView出现在里面ViewPager所以它会阻止应用程序中的内容 我怎样才能得到AdView出现在下面ViewPager而不是在里面 我试过把AdView in a RelativeLayout以下ViewPager但随后AdVie
  • 具有 CRUD 方法的类违反了单一职责原则?

    我试图理解单一责任原则 我有以下问题 单一职责原则 SRP 规定 永远不应该 班级变更的原因不止一个 通常我们的Resource Service和Repository类有 创建 读取 更新和删除方法 我们正在将每个班级更改为 修改任何这些操