android – Dagger 2 Singleton vs Real Singleton

android – Dagger 2 Singleton vs Real Singleton,第1张

概述我想在我的项目中使用匕首2. Dagger提供了一个创建单例的好方法,我在项目中有一些,但是Dagger为每个@Singleton对象创建了一个新的对象图,每个新的容器,所以我们必须在应用程序级别创建组件,我们应该提供应用程序使用单身的类,这看起来不太好:(. 问题是:我应该保留我的旧单身人士吗?或者我应该使用匕首? Dagger是管理单身人士的一种更好的方式,部分原因是你不需要担心在单元测试中如 @H_502_4@ 我想在我的项目中使用匕首2. Dagger提供了一个创建单例的好方法,我在项目中有一些,但是Dagger为每个@Singleton对象创建了一个新的对象图,每个新的容器,所以我们必须在应用程序级别创建组件,我们应该提供应用程序使用单身的类,这看起来不太好:(.
问题是:我应该保留我的旧单身人士吗?或者我应该使用匕首?@H_502_4@解决方法 Dagger是管理单身人士的一种更好的方式,部分原因是你不需要担心在单元测试中如何替换这些单身人士:你的单身人士将通过你可以在单元测试中控制和覆盖的方式注入(即构造函数参数)和可访问的领域).

Dagger creates a new object graph with every new container for each @Singleton object so we have to create the component in the application level

如果您需要应用程序级单例,则需要在应用程序的生命周期中保留相同的组件实例,而不是为每个新的“容器”创建一个新的组件实例.该组件将包含并提供单例,因此您不需要在应用程序中激活多个对象图.如果某个外部创建者(例如Android或servlet引擎)在Dagger之外自己创建对象,这可能意味着您需要将Dagger组件保存在单例持有者(可能是线程安全的公共静态字段)中为你的老单身人士做的;这仍然应该更容易理解和维护,因为您可以通过Dagger提供尽可能多的单例,并且只担心组件本身的一个外部管理单例.

作为替代方案,您可以完全按原样保留旧单例,并在模块中编写@ProvIDes方法,以在Dagger创建的对象请求它们时检索这些单例实例.这样您就可以随时随地创建新的对象图,并且您的单身人士仍将表现为单身人士.不过,我会对此提出警告,因为在这一点上,你的单身人士可以在你的应用程序中以两种不同的方式访问,只有那些由Dagger创建或Dagger管理的人才会在测试中被轻易覆盖;这可能令人困惑,难以管理.

@H_502_4@ @H_502_4@ @H_502_4@ @H_502_4@ 总结

以上是内存溢出为你收集整理的android – Dagger 2 Singleton vs Real Singleton全部内容,希望文章能够帮你解决android – Dagger 2 Singleton vs Real Singleton所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1128132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存