绑定视图和注入视图有什么区别?

What is the difference between Binding Views and Injecting Views?

我正在学习 ButterKnife 和 dagger,并且了解到 Butterknife 仅有助于避免样板代码(绑定视图)并且它并没有真正注入。在这种情况下,匕首赞美 Butterknife,因为它注入了代码。现在绑定视图和注入视图有什么区别?

Dagger 依赖注入 'constructs instances of your application classes and satisfies their dependencies'。它构建您的实例的方式基于您的匕首提供和模块中定义的规则集。

Butterknife 使用注释处理来注入视图。它具有通过 Id 等简化查找视图的方法。

ButterKnife

Dagger 2

Butterknife - 绑定视图:它将视图从 XML 布局绑定到 Java 成员变量。因此您不必手动调用 findViewById 来绑定视图。

Dagger - 依赖注入库,用于注入依赖项:

依赖注入,简单来说,就是将依赖传递(注入)到任何 class 而不是在 class 本身内部创建依赖。

比如说,你有一个名为 ClassA 的 class,它需要一个 ClassB 的实例。一种方法是您可以在 Class A 本身内部创建 ClassB 的实例。但是在依赖注入中,我们在外部创建 ClassB 实例,然后通过其构造函数或 setter 方法将其传递给 ClassA。

依赖注入可以在没有任何框架的情况下完成,但是如果你有一个大项目并且它有很多复杂的依赖关系,它会变得很丑陋。 Dagger 是一个 Android 框架,有助于以更简洁的方式进行依赖注入。