gpt4 book ai didi

java - 依赖注入(inject) - 接口(interface)的正确使用?

转载 作者:行者123 更新时间:2023-12-01 22:32:16 25 4
gpt4 key购买 nike

我一直在阅读有关 DI 和最佳实践的内容,但仍然没有找到这个问题的答案。我什么时候应该使用接口(interface)?

  1. 一些开发人员建议为每个被注入(inject)的对象添加接口(interface)。这将构成一个模块化应用程序。
  2. 其他一些人反对这一点。

所以我的问题是哪一个是正确的?

编辑:

下面是两个方面,我还是没看出使用接口(interface)的好处。在这两种情况下,我都可以轻松模拟类,并更改实现

使用接口(interface)

bind(IUserStorage.class).to(UserStorage.class);
// Unit test
bind(IUserStorage.class).to(Mock(UserStorage.class));

不使用接口(interface)

bind(UserStorage.class).to(UserStorage.class);
// Unit test
bind(UserStorage.class).to(Mock(UserStorage.class));

最佳答案

我不敢相信使用接口(interface)违背了 OOP 原则!

在这种情况下我肯定会使用接口(interface)。这意味着您的组件是松散耦合的,并且可以轻松模拟和/或替换替代方案。许多 DI 框架将使用这些接口(interface)来提供附加功能(例如,创建映射到真实对象的代理对象,但具有附加功能)。

因此,我会尝试对除最琐碎的注入(inject)对象之外的所有对象使用接口(interface)。在某些阶段,您会想要利用可替代性、框架代码生成等,而改造接口(interface)使用是一种额外的痛苦,在项目开始时很容易避免。

关于java - 依赖注入(inject) - 接口(interface)的正确使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com