关联注入还是依赖注入?

2024-04-23

我正在研究依赖注入模式。我看过很多例子,其中一个典型的例子就是以XxxService/XxxRepository为例。但我认为,根据UML概念,类XxxRepository应该是类XxxService的关联。为什么不称这种情况为关联注入,但仍然是依赖注入?:)

Thanks!

2018 年 1 月 26 日更新

我目前认为的概念dependency injection适合这个问题描述的情况。因为协会只是一个特殊的依赖性在 UML 中。

请参考这篇文章 https://martinfowler.com/bliki/DependencyAndAssociation.html,马丁·福勒说:

“如果一个元素(供应商)定义的更改可能会导致另一个元素(客户)的更改,则两个元素之间存在依赖性”。 这是一个非常模糊和笼统的关系,这就是为什么 UML 对于不同形式的依赖有许多刻板印象。

and

关联也意味着依赖关系,如果两个类之间存在关联,那么也存在依赖关系。

所以我现在不能接受任何答案。或者也许这个问题不是一个好问题,因为每个开发人员都有自己的观点。我正在认真考虑结束这个问题。


因为依赖注入是为编码而定义的,而不是为设计而定义的。

您可以使用或不使用注入来编写关联,但它只是一个关联。

例如,在Java中,以下代码显示了类A和实现接口IB的类B之间的关联。

class A{ @Inject private IB b; ... }

or

Class A{ private IB b = new B(); ... }

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

关联注入还是依赖注入? 的相关文章

  • 龙目岛和吉斯注射液

    我是 lombok 和 guice 注入的新手 我可以了解一般概念 但我遇到了一些我不理解的代码 并且由于语法而无法搜索 以下是代码 有人可以帮助我理解吗 import com google inject Inject import lom
  • 使用选项模式的依赖注入

    我正在尝试从 appsettings 文件加载一些设置 但在使用选项模式时加载列表的方式遇到了一个小问题 假设我有以下类 用于加载设置 public class Application public string Name get set
  • 依赖注入和项目参考[重复]

    这个问题在这里已经有答案了 我正在尝试了解 DI 以便更好地了解 IoC 以及其他好处 在 DI 之前 我有一个项目 其中包含一个 UI 项目 MVC 一个 BusinessLogic 项目和一个 DataAccess 项目 我还有一个 S
  • 在 Android 中“注入所有内容”是一种不好的做法吗?

    在研究依赖注入时 我发现了一些建议的方法注入一切 http frogermcs github io inject everything viewholder and dagger 2 example 和其他人说没有必要这样做 https s
  • 如何使用 js/uml 对 JavaScript 文件进行逆向工程?

    Goal 我的目标是从我的 JavaScript 项目 由多个 js 文件组成 中获取 UML 模型并将其存储为 XMI 我已经走了多远 我在网上搜索了一下 发现js uml是第一个去的地方 我已经设法让 js uml 插件与 Eclips
  • 使用简单注入器进行方法级属性拦截

    借助 Unity 我能够快速添加基于属性的拦截 如下所示 public sealed class MyCacheAttribute HandlerAttribute ICallHandler public override ICallHan
  • 类型 RoleStore 不可分配给服务 IRoleStore

    我正在尝试使用 Autofac 为使用 MVC5 和 EF6 的项目设置依赖项注入 我很难弄清楚如何正确解耦 EntityFramework RoleStore 实现 我只想依赖 Identity IRoleStore 但我知道对于泛型类
  • TinyIoC、Xamarin.iOS、链接器设置

    我正在尝试让 TinyIoC 在 Xamarin iOS 上运行 但运气不太好 我的项目链接器设置设置为 仅链接 SDK 程序集 我实际上正在做这么简单的事情 public interface IPerson int age get pub
  • 无法使用 Hilt 注入 workmanager 构造函数

    我正在开发一个 Android 应用程序 我尝试将 hilt 与 workmanager 构造函数一起使用 但它不起作用并给出了此错误 2020 08 18 19 01 09 989 18125 18759 com E WM WorkerF
  • PlantUML 活动图 返回

    我正在使用 PlantUML 创建活动图 我想要从里面出来的箭头Modify Details回到OP2而不是钻石 我有这个图 startuml Swimlane1 start OP1 Swimlane2 OP2 if Form Valid
  • 在 MVC 中使用 DI 时的大量控制器构造函数参数列表

    我正在开发 ASP NET MVC3 解决方案 该解决方案使用 autofac 的依赖注入 我们的控制器由 autofac 正确创建 所有必需的对象都正确传入 这些对象通常包括服务 存储库和将域对象转换为 MVC 视图 模型的映射器 所以控
  • 我不应该在 Spring Boot 项目中使用“new”关键字吗?

    我正在研究 Spring Boot Rest API 最后我确实使用了new关键字在这里和那里 我想知道 当我在程序中使用 new 关键字时 我是否做错了什么 而如果在实际项目中绝对禁止使用new关键字 如果答案是肯定的 我应该注释我编写的
  • 如何在时序图上表示 if 条件 1 else if 条件 2?

    我想知道 如何在序列图上表示 if cond1 else if cond2 语句 if condition1 Do something else if condition2 Do something else if 我不确定是否有两个独立的
  • Ninject 绑定所有实现相同接口的类

    我有一个接口类 public interface IStartUpTask bool IsEnabled get void Configure 我有多个类实现相同的接口 其中一个类如下所示 public class Log4NetStart
  • 在简单注入器中注册具有多个构造函数和字符串依赖项的类型

    我正在尝试弄清楚如何使用 Simple Injector 我在项目中使用了它 注册简单服务及其组件没有任何问题 但是 当组件具有两个以上实现接口的构造函数时 我想使用依赖注入器 public DAL IDAL private Logger
  • MVC3、Ninject、MvcSiteMapProvider - 如何将依赖项注入到重写方法

    我有一个正在使用的 MVC3 应用程序Ninject http ninject org and Mvc站点地图提供者 http mvcsitemap codeplex com 我创建了此类 MvcSiteMapProvider 使用它来动态
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • 创建 AoT 兼容的服务工厂

    我正在尝试为缓存服务创建一个服务工厂 主要要求是每次可以使用不同的字符串实例化单个服务 最终的结果会有多个cache每个服务都由唯一定义databaseName 每个缓存可以有一个或多个stores也由唯一定义storeName 其他服务将
  • 如何在 BenchmarkDotNet 中使用 DependencyInjection?

    我想在我现在正在使用的一些遗留代码上使用 BenchmarkDotNet 它是用 C Net462 编写的 这是一个庞大 古老且复杂的系统 我想对某些特定类中的一些方法进行基准测试 这些类使用依赖注入 我不确定如何做到这一点 到目前为止我看

随机推荐

  • Javascript:setTimeout() - 需要帮助

    我目前正在网页上执行突出显示功能 并为此使用 jquery 插件 我的代码如下所示 var input function var matchword searchbox val if matchword body removeHighlig
  • 当同时按下两个按钮时

    我有一个小问题 我有一个表单 这是我的登录表单 然后我还有另一个表单 这是我的添加用户表单 当我单击登录表单的登录按钮时 它需要检查是否同时按住了 Shift 和 Control 键 如果两者均未按下 则不应打开添加用户表单 但如果它们都被
  • C++ UDP Socket端口复用

    如何在 C 中创建客户端 UDP 套接字 以便它可以侦听另一个应用程序正在侦听的端口 换句话说 如何在 C 中应用端口复用 我只想监听一个端口 您可以使用嗅探器来做到这一点 只需忽略来自不同端口的数据包即可 我可能需要阻止它发送一些特定的数
  • Powershell:如何将字节字符串与二进制注册表值进行比较

    我有一个二进制注册表值 我想检查它在 Powershell 脚本中的一致性 我通过以下方式检索值 Get ItemProperty Path HKLM Software ORL WinVNC3 Name ACL ACL 这将返回一个字节字符
  • 使用 AngularJS 将选择重置为默认值

    我有一个关于 AngularJS 的问题 我有一个 使用 ngOptions 创建的选项进行选择 我想要 将所选选项设置回默认选项 我尝试过了 删除模型变量 例如 if angular isDefined scope first delet
  • 如何在视图中加载部分视图?

    我对这种片面的观点感到非常困惑 我想在我的主视图中加载部分视图 这是一个简单的例子 我正在加载 Homecontroller Index 操作的 Index cshtml 作为主页 在index cshtml中 我通过创建一个链接 Html
  • 如何更改 Composer 中一个包的最低稳定性 [重复]

    这个问题在这里已经有答案了 我正在尝试合并LDAP 验证 https github com ccovey ldap auth通过 Composer 模块到我的 Laravel 项目中 然而 它仅适用于dev稳定版本 我当前的 Compose
  • 如何使用 AngularJS 显示和隐藏 div?不使用任何 css 或 jquery

    我想使用 angularJS 隐藏 div 并在单击按钮时显示它 我使用了 ng show 和 ng hide 但它不起作用 div div
  • 可点击的精灵标签?

    我一直在玩精灵文本标签 更具体地说是这个例子 http stemkoski github io Three js Sprite Text Labels html http stemkoski github io Three js Sprit
  • Flask Python 未加载 main.css

    文件结构如下 app py 和 app2 py 几乎相同 只是 app2 py 指向 templates 文件夹 因为 app2 py 位于 src 文件夹中 app py app2 py 通过 app py 加载时 一切运行正常并且找到了
  • ReferenceError:CKEDITOR 未定义

    我正在尝试使用CK编辑器 http ckeditor com 但是当我尝试时出现以下错误 在 JS 控制台中 例子 http docs ckeditor com guide dev framed从教程中 浏览器中仅显示一个文本框 Refer
  • 独立Python3脚本之间的进程间通信

    我们可以使用标准的 multiprocessing Queue 类在独立的 Python3 脚本之间进行通信吗 bash aaa py bash bbb py 如果没有 是否有另一个库 例如标准多处理模块 用于与独立脚本进行通信 看一下有关
  • Webpack 中的 /node_modules/watchpack 中出现“无法解析模块 'aws-sdk'、'child_process'、'net'”

    我正在尝试构建我的 prod webpack 文件并收到 5 10 个 无法解析模块 aws sdk child process 的错误 所有这些错误都以相同的路径开始 ERROR in webpack watchpack chokidar
  • 如何在对象字段值发生变化时定义断点?

    作为示例 给出下面的代码摘录 我想定义一个断点 每当对象字段值发生变化时就会触发断点 并且可以选择根据条件中断 False or True在这种情况下 type TForm1 class TForm EnableButton TButton
  • 一个表列可用于多个 fk 表?

    对于这种情况 最好的解决方案 做法是什么 我有一个表 可以引用多个表 对象 以下是 UserCalendar 表的示例 这是一个用户保存事件的表 但系统也从后面插入到该表中 用户执行一些有截止日期的服务 这些服务也被插入到该表中 问题是没有
  • 为什么 C# 在这种情况下无法解决正确的重载问题?

    我遇到过一种明确的奇怪情况 但重载解析器并不这么认为 考虑 public static class Program delegate int IntDel delegate string StringDel delegate void Pa
  • 是否可以在 Jenkins 的构建后操作中执行 JavaScript 脚本?

    我需要在构建结束后执行 JavaScript 脚本 该脚本应该使用 npm 包 我安装的插件是 post build actions 我发现类似带有选项的执行脚本 add generic file script 如果我在这里给出 js脚本
  • 如何在 jQuery 中删除 css 属性

    if prev clicked accordion li a category css background image url img off all channel png accordion li a comment css back
  • posix_fadvise(WILLNEED) 会使 IO 变慢吗?

    在运行 Linux 内核版本 2 6 18 194 26 1 el5 的 CentOS 5 5 机器上 我注意到 posix fadvise WILLNEED 使读取 60K 文件比常规 IO 慢了近 200 看起来实际的 fadvise
  • 关联注入还是依赖注入?

    我正在研究依赖注入模式 我看过很多例子 其中一个典型的例子就是以XxxService XxxRepository为例 但我认为 根据UML概念 类XxxRepository应该是类XxxService的关联 为什么不称这种情况为关联注入 但