区块链技术博客
www.b2bchain.cn

安卓依赖注入的标准化之路求职学习资料

本文介绍了安卓依赖注入的标准化之路求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

自从 2009年 JSR 330 发布以后, Java 中的依赖注入框架就踏上了一个新台阶。由于 JSR 330 是一个通用的标准,所以只定义了依赖注入最基本的概念,这样各种依赖注入的实现框架可以在满足基本规范的基础上去做各种扩展。 在 JSR 330 中本质上只定义了 4 个东西:

  • @Inject 注解是用来识别可以被注入的对象或者成员。如果放到构造函数上,说明这个类可以被依赖注入框架通过构造函数来创建对象;如果放到成员变量上则说明这个成员变量需要由依赖注入框架来给其赋值。
  • @Scope 注解是用来定义一个注入对象所存在的范围的,是全局的还是局部的?
  • @Qualifier 注解是用来区分同一个类型的多个不同实例的。比如说,对于同一个 Persion 类,在您的应用中可能有两个不同的对象分别代表 男人和女人。则可以通过限定符来区分这两种对象。
  • Provider<T> 接口是注入对象的另一种形式。可以直接注入一个对象,也可以注入一个 Provider, 然后从这个 Provider 里面再来获取对象。

可以看到对于规范来说,只定义最基础的东西才让保证该规范的灵活性和普适性,这样其他实现该规范的框架才能不受规范的约束来提供特定的功能。

在前面学习和使用 Dagger 的过程中,我们可以看到其使用的门槛还是挺高的,要搞懂 Dagger 还是需要下一番功夫的。这就充分展示了 Dagger 用法的灵活性,一个框架当用法越灵活则越难掌握,并且在团队协作中也越难推广,对于一个几个人的小团队,可能里面每个人对该框架的用法都不一样,每个人都有每个人自己的偏好,这样就容易导致团队协作出现问题,当团队成员出现变化后,给后续维护人员带来不少困惑。所以在 Java 或者 安卓开发中,我们可以看到越是标准化的框架使用的人越多。可以通过 Github 中每个项目加星的数目来看几个安卓中常用或者不常用的框架对比:

框架名称 加星的数目
OkHttp 37.7K
Retrofit 36.1K
MPAndroidChart 31.2K
Glide 29.5K
Lottie-android 29.2K
AndroidUtilCode 27.4K
zxing 22.7K
fastjson 22K
RxAndroid 19K
RxJava 43.1K
ButterKnife 25.4K
Dagger 15.3K

上面的 RxJava 由于 Java 开发人员也使用,所以加星的人数最多。

通过上面这些流行的框架加星的数目可以看到,Dagger 加星的人数是最小的。上面这些库中和 Dagger 复杂度比较相近的就是 RxJava,但是 RxAndorid 的加星人数依然比 Dagger 多出将近 25%,之所以会这样,是因为 RxJava 虽然也很复杂,但是你可以只用 RxJava 最简单的用法,只需要记住几个常用的函数,就可以在项目中使用 RxJava 了,比如在很多项目中使用 RxJava 就是为了配合 Retrofit 来做网络请求用的:

“`
Request request = retrofit.create(Request.class);
Observable> observable = request.getData(“like”);
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>() {
@Override
public void onNext(Translation result) {

自从 2009年 JSR 330 发布以后, Java 中的依赖注入框架就踏上了一个新台阶。由于 JSR 330 是一个通用的标准,所以只定义了依赖注入最基本的概念,这样各种依赖注入的实现框架可以在满足基本规范的基础上去做各种扩展。 在 JSR 330 中本质上只定义了 4 个东西:

  • @Inject 注解是用来识别可以被注入的对象或者成员。如果放到构造函数上,说明这个类可以被依赖注入框架通过构造函数来创建对象;如果放到成员变量上则说明这个成员变量需要由依赖注入框架来给其赋值。
  • @Scope 注解是用来定义一个注入对象所存在的范围的,是全局的还是局部的?
  • @Qualifier 注解是用来区分同一个类型的多个不同实例的。比如说,对于同一个 Persion 类,在您的应用中可能有两个不同的对象分别代表 男人和女人。则可以通过限定符来区分这两种对象。
  • Provider<T> 接口是注入对象的另一种形式。可以直接注入一个对象,也可以注入一个 Provider, 然后从这个 Provider 里面再来获取对象。

可以看到对于规范来说,只定义最基础的东西才让保证该规范的灵活性和普适性,这样其他实现该规范的框架才能不受规范的约束来提供特定的功能。

在前面学习和使用 Dagger 的过程中,我们可以看到其使用的门槛还是挺高的,要搞懂 Dagger 还是需要下一番功夫的。这就充分展示了 Dagger 用法的灵活性,一个框架当用法越灵活则越难掌握,并且在团队协作中也越难推广,对于一个几个人的小团队,可能里面每个人对该框架的用法都不一样,每个人都有每个人自己的偏好,这样就容易导致团队协作出现问题,当团队成员出现变化后,给后续维护人员带来不少困惑。所以在 Java 或者 安卓开发中,我们可以看到越是标准化的框架使用的人越多。可以通过 Github 中每个项目加星的数目来看几个安卓中常用或者不常用的框架对比:

框架名称 加星的数目
OkHttp 37.7K
Retrofit 36.1K
MPAndroidChart 31.2K
Glide 29.5K
Lottie-android 29.2K
AndroidUtilCode 27.4K
zxing 22.7K
fastjson 22K
RxAndroid 19K
RxJava 43.1K
ButterKnife 25.4K
Dagger 15.3K

上面的 RxJava 由于 Java 开发人员也使用,所以加星的人数最多。

通过上面这些流行的框架加星的数目可以看到,Dagger 加星的人数是最小的。上面这些库中和 Dagger 复杂度比较相近的就是 RxJava,但是 RxAndorid 的加星人数依然比 Dagger 多出将近 25%,之所以会这样,是因为 RxJava 虽然也很复杂,但是你可以只用 RxJava 最简单的用法,只需要记住几个常用的函数,就可以在项目中使用 RxJava 了,比如在很多项目中使用 RxJava 就是为了配合 Retrofit 来做网络请求用的:

“`
Request request = retrofit.create(Request.class);
Observable> observable = request.getData(“like”);
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>() {
@Override
public void onNext(Translation result) {

自从 2009年 JSR 330 发布以后, Java 中的依赖注入框架就踏上了一个新台阶。由于 JSR 330 是一个通用的标准,所以只定义了依赖注入最基本的概念,这样各种依赖注入的实现框架可以在满足基本规范的基础上去做各种扩展。 在 JSR 330 中本质上只定义了 4 个东西:

  • @Inject 注解是用来识别可以被注入的对象或者成员。如果放到构造函数上,说明这个类可以被依赖注入框架通过构造函数来创建对象;如果放到成员变量上则说明这个成员变量需要由依赖注入框架来给其赋值。
  • @Scope 注解是用来定义一个注入对象所存在的范围的,是全局的还是局部的?
  • @Qualifier 注解是用来区分同一个类型的多个不同实例的。比如说,对于同一个 Persion 类,在您的应用中可能有两个不同的对象分别代表 男人和女人。则可以通过限定符来区分这两种对象。
  • Provider<T> 接口是注入对象的另一种形式。可以直接注入一个对象,也可以注入一个 Provider, 然后从这个 Provider 里面再来获取对象。

可以看到对于规范来说,只定义最基础的东西才让保证该规范的灵活性和普适性,这样其他实现该规范的框架才能不受规范的约束来提供特定的功能。

在前面学习和使用 Dagger 的过程中,我们可以看到其使用的门槛还是挺高的,要搞懂 Dagger 还是需要下一番功夫的。这就充分展示了 Dagger 用法的灵活性,一个框架当用法越灵活则越难掌握,并且在团队协作中也越难推广,对于一个几个人的小团队,可能里面每个人对该框架的用法都不一样,每个人都有每个人自己的偏好,这样就容易导致团队协作出现问题,当团队成员出现变化后,给后续维护人员带来不少困惑。所以在 Java 或者 安卓开发中,我们可以看到越是标准化的框架使用的人越多。可以通过 Github 中每个项目加星的数目来看几个安卓中常用或者不常用的框架对比:

框架名称 加星的数目
OkHttp 37.7K
Retrofit 36.1K
MPAndroidChart 31.2K
Glide 29.5K
Lottie-android 29.2K
AndroidUtilCode 27.4K
zxing 22.7K
fastjson 22K
RxAndroid 19K
RxJava 43.1K
ButterKnife 25.4K
Dagger 15.3K

上面的 RxJava 由于 Java 开发人员也使用,所以加星的人数最多。

通过上面这些流行的框架加星的数目可以看到,Dagger 加星的人数是最小的。上面这些库中和 Dagger 复杂度比较相近的就是 RxJava,但是 RxAndorid 的加星人数依然比 Dagger 多出将近 25%,之所以会这样,是因为 RxJava 虽然也很复杂,但是你可以只用 RxJava 最简单的用法,只需要记住几个常用的函数,就可以在项目中使用 RxJava 了,比如在很多项目中使用 RxJava 就是为了配合 Retrofit 来做网络请求用的:

“`
Request request = retrofit.create(Request.class);
Observable> observable = request.getData(“like”);
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>() {
@Override
public void onNext(Translation result) {

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 安卓依赖注入的标准化之路求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们