将Dagger2用于DI的真正优势是什么?

问题描述 投票:-1回答:1

我一直在学习如何使用Dagger2编写更简洁的代码,并尊重依赖注入和依赖倒置的原理。但是我不知道这两个原则是否真的需要实现像Dagger2这样的工具。

以下面的简单代码为例:

class Computer(){
   val keyboard:Keyboard
   val mouse:Mouse

   init{
      keyboard = Keyboard()
      mouse = Mouse()
   }
}

这是不遵循D.Injection或D.Inversion的类的示例。如果我们稍微修复一下。

class Computer(keyboard:KeyboardInterface, mouse:MouseInterface){
   ...}

现在,我们根据以下两个原则对其进行了改进:-依赖关系注入:我们的计算机类不必构建(或知道如何构建)键盘和鼠标类。这些类的实现被注入到构造函数中。-Dependency Inversion:我们的计算机类没有收到特定的类,但有接口。因此,我们引入了一个抽象级别,我们的类不依赖于这些类的特定实现,而是依赖于方法的抽象定义(在接口中定义的方法)。

因此,仅遵循代码原则,我们无需使用任何外部库即可实现这两个原则。我知道会有很多样板代码,Dagger2可以为您构造对象,从而使代码更简洁。但是我的问题是,除了更干净的代码之外,Dagger2还提供了什么值?

如果您不知道自己在做什么,就可以轻松使用Dagger2而不执行DI原理。与此相反,您可以在不使用Dagger2的情况下实现DI原理(这只是一个不太干净的代码)。那我想念什么吗?为什么在每个项目中似乎都必须使用Dagger2之类的工具?

android kotlin dependency-injection dagger-2 dependency-inversion
1个回答
0
投票

如果您的项目增长到足够大的大小,则样板可以成为您代码中的绝大部分。如果您弄错了样板,很容易搞砸并引入错误。如果您想更改事情,而又不想重做很多样板,则可能很难重组应用程序。这一点-样板变得令人压抑-可能比您想象的要早得多。

您可以在不依赖注入的情况下构建任何应用。但是你能维持吗?您可以更新吗?

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