我inject viewModels,repositories,fragments,Utils和..。但是,使用inject class和dependency injection Koin或Dagger-hilt是一种好方法吗?
假设我们希望在StringBuilder() fragment中使用类
第一方法:
我们可以inject它
val otherModule= module {
single { StringBuilder() }
}并在fragment中这样使用:
class Fragment : BaseFragment(){
private val mPassword : StringBuilder by inject()
}第二种方法:
我们可以在没有new的情况下创建instance
class Fragment : BaseFragment(){
private var mPassword = StringBuilder()
},我的问题是,第一种方法是我们常用的方法?
发布于 2020-10-10 09:07:28
我得说这要看情况。Di背后的主要目标/概念是实现S.O.L.I.D的firth原则,或者如freecodecamp.org所说:
这是S.O.L.I.D的第五个原则--鲍勃叔叔提出的面向对象编程和设计的五个基本原则--它规定类应该依赖抽象而不是具体(简单地说,硬编码)。
根据这些原则,一个类应该专注于履行自己的责任,而不是创建完成这些职责所需的对象。这就是依赖注入的作用所在:它为类提供所需的对象。
另一个很好的答案是here,因为在不使用依赖注入时已经讨论过了。
现在我的观点是:如果可能的话,尝试注入那些您必须经常使用的依赖项,如果可能的话,通过构造函数注入注入它们。这样,您就可以很容易地看到类使用了哪些依赖项。尽量不要注入曾经使用过的类或公共语言类。
发布于 2020-10-10 09:05:41
不,你根本不会注入公共语言类。这是没有好处的。当类需要额外的依赖时,我们就注入它们,而我们不想自己创建这些依赖项,所以我们让DI框架创建它们。
https://stackoverflow.com/questions/64291385
复制相似问题