1. 【浅入深出理解 dagger、Hilt】 - 简介
2022-04-27 本文已影响0人
zhongjh
什么是依赖注入
我们不通过 new 的方式在类内部创建依赖类的对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类来使用。
dagger、Hilt是什么?
dagger、Hilt都是Google提供的用于依赖注入的库,Dagger因为稍微难用,所以Google专门为我们提供了一个使用更简单的依赖注入库Hilt
这些库能给我带来什么好处?
我们就直接开门见山了,常用场景就是MainActivity
下需要new一个MainModel
,然后MainModel
构造函数要传递一个MainParameter
类,代码如下:
public class MainEntity {
public MainEntity() {
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class MainActivity extends AppCompatActivity {
private MainEntity mainEntity;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainEntity = new MainEntity();
mainEntity.setName("名称");
((TextView) findViewById(R.id.tvName)).setText(mainEntity.getName());
}
}
如果使用依赖注入会有什么好处?
- 在大项目里面,一个对象类会应用在很多模块类里面使用,假如对象类的某个构造函数修改,那么涉及到的模块类都要修改。使用依赖注入并不是完全解耦对象类和模块类,依赖注入里面有个工厂模式Module,当涉及到修改的时候,同样需要修改Module。达成的目的,是为了把影响降到最低
- 方便单元测试,若需要替换为网络测试类,只需要修改相应的Module就可以了
下一篇文章,让我们介绍dagger
在后续,会在仿企业项目中加入依赖注入,单元测试,让大家更好了解依赖注入带来的好处。欢迎star关注!
只是简单介绍依赖注入使用方式的实例源码如下:
zhongjhATC/HiltAndDaggerDemo: 演示 Hilt、Dagger 的demo (github.com)
其他相关文章
1. 【浅入深出理解 dagger、Hilt】 - 简介 - 简书 (jianshu.com)
2. 【浅入深出理解 dagger、Hilt】 - dagger无参依赖注入 - 简书 (jianshu.com)
3. 【浅入深出理解 dagger、Hilt】 - dagger有参依赖注入 - 简书 (jianshu.com)
4. 【浅入深出理解 dagger、Hilt】 - Hilt - 简书 (jianshu.com)