繁体   English   中英

为什么将Dagger与Android架构组件一起使用

[英]Why use Dagger with Android Architecture Components

我已经在Android开发和男孩中缺席了大约一年,这是一大块咀嚼:Kotlin,LifeCycle,Room,ViewModel,Dagger等等。

我试图了解新的MVVM推荐模式,虽然看到更“标准化”的东西真的很棒,但有些事情还不清楚。

要以简单的方式处理事情,我们来看一个简短的示例。

首先,创建实体

@Entity(tableName = "user_table")
public class User {

   @PrimaryKey
   @NonNull
   @ColumnInfo(name = "name")
   //vars, getters, setters
}

然后创建DAO

@Dao
public interface UserDao {

   @Insert
   void insert(User user);
...
}

然后,我需要创建存储库。 这基本上是我的问题开始的地方。

我看到很多例子,官方文档也使用Dagger2。 虽然我仍然很难与Dagger斗争以正确理解依赖注入我的问题是,为什么我需要使用Dagger? 我确实理解去耦组件可以更容易地进行测试,但这对小型项目来说是否必然? 为什么不在没有注入的情况下直接在ViewModel,Repository,DAO之间进行交互(可能在构造函数上传递了类)?

作为旁注,可能从Kotlin开始是一个好点。 虽然我发现很酷但我发现官方文档/指南的许多部分仍然只有Java样本......所以我有点想学习旧Java的新东西,但同时,因为我以前的项目是javascript,切换到kotlin不会那么难......

依赖注入有很多好处。 正如您已经指出的那样,它促进了解耦和可测试性。 但真正吸引匕首的是依赖管理的简易性。 Dagger在编译时计算出你的依赖图,甚至提供了本地化(或全球化)生命周期和范围的机制。 它也是基于组件的,因此可以轻松构建。

在小型项目中使用匕首是有争议的。 如果你的项目包含简单的依赖图并且不是一个不断发展的依赖图,那么来自dagger的附加代码(和足迹)可能有点过多(如果你还不熟悉的话,更不用说学习曲线了)。

但在我看来,使用依赖注入总是一件好事。 它促进了SOLID原则和更清洁的架构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM