我应该在对象类和 Hilt @Singleton 类之间使用什么。在安卓中

问题描述 投票:0回答:1
 object A { ... }
 @Singleton class B { ... }

我是 Hilt 的新手,假设这两个类在技术上是相同的,但由于 DI 复杂性,B 更难实现,仅限于在入口点中使用。 我想知道使用 @Singleton 而不是对象类的优点。 性能上更快吗?

android class object singleton dagger-hilt
1个回答
0
投票

我不会说它确实更难实现,特别是如果您的整个应用程序都使用 Hilt。是的,多了 3-5 行代码。但一般来说,如果您需要单例,则意味着它保存一些数据/将其传递到更远的地方/自己做一些额外的工作。对于对象来说,不可能有构造函数字段,并且它是任何类中非常重要的部分,它比通常的静态函数帮助程序执行更多操作。

假设您有一个可以写入或读取数据库的 A 类。你必须

  • 要么在构造函数中注入你的 DAO,
  • 在类 A 中手动创建它作为类字段 - 这已经违反了松散耦合类的原则,并使测试变得异常复杂,
  • 将每个函数作为函数参数传递您的 DAO - 但它是 一个明显糟糕的设计,我不会就此止步。

此外,通过注入依赖项而不是在类内部创建依赖项,您可以实现一些灵活的实现替代(一个接口 - 5 个实现 - 根据您的需求/风格/构建设置、抽象和干净的不同注入)。测试这些类更容易 - 您可以模拟构造函数参数,而不是使类字段成为非私有字段,然后再模拟它们。

如果您想要一个像 TimeHelper 这样的常用对象或类似的东西,也可以通过使用顶级函数来实现。

© www.soinside.com 2019 - 2024. All rights reserved.