Android技术栈(三)依赖注入技术的探讨与实现,androidsdk开发文档

并且如果后来它的构造函数或者是具体实现类发生了改变,那都与你现在所写的代码无关,它们的改变不会迫害你去更新现有的代码.

而在传统的软件开发过程中,我们通常要在一些控制器中去主动依赖一些对象,如果这些对象的依赖方式在未来频繁地发生改变,那我们的程序是无法经受住考验的.

这就是所谓控制反转,它将获得依赖对象的方式反转了.

2.常见的依赖注入框架

  • 在服务器后端,一般使用Spring框架进行依赖注入。
  • Android上,一般使用Dagger系列进行依赖注入。

3.实现自己的依赖注入框架

有些同学可能知道Dagger实现了Java的依赖注入标准(JSR-330),这个标准使用的有些注解确实让人有点摸不着头脑,而且Dagger使用的门槛也较高,估计应该有不少人看了许多《Dagger完全入门》之类的文章,然而到最后还是没搞懂Dagger到底是怎么一回事.

image.png

所以我就想,能不能搞一个稍微亲民一点的依赖注入框架让我直接先能用上.我不是大神,所以它不一定要实现JSR-330,也不一定使用注解处理器来追求极致的效率,但它必须要好理解,里面的概念必须是常见的.

在参考了服务器上Spring框架的依赖注入后,我决定使用xml作为依赖注入的配置文件,本来想上Github看看有没有现成的轮子可以让我"抄抄"之类的,谁知道逛了一圈下来之后才发现Android开发者除了DaggerDagger2根本没得选,这更加坚定了我造轮子的信心.

使用xml是有优势的,xml是最常见的配置文件,它能更明确的表达依赖关系。所以就有了Liteproj这个库与Dagger不同,Liteproj不使用Java来描述对象间的依赖关系,而是像Spring一样使用xml.

Liteproj目前的实现中也没有使用注解处理器而是使用了反射,因为Liteproj追求的并非是极致的性能,而是便于理解和上手以及轻量化和易用性,它的诞生并不是为了取代Dagger2或者其他的一些依赖注入工具,而是在它们所没有涉及的领域做一个补全。

客官请移步 : Liteproj

4.xml解析

既然选择了xml,那么就要需要解决解析xml的问题.

经过考虑之后最终选择了dom4j作为xml解析依赖库.其实Android本身自带了xml的解析器,而且它的效率也不错,那我为什么还要使用dom4j呢,那当然是因为它好用啊。Android自带的xml解析器是基于事件驱动的,而dom4j提供了面向对象的xml操作接口,我觉得这会给我的编码带来极大的便利,可以降低开发难度.

比如dom4j中的Document->Element->Attribute等抽象,非常好地描述了xml的结构,你甚至无需看它的文档就能简单上手,这可比XmlPullParser中定义的一堆常量和事件好理解多了.

而且dom4j也是老牌的xml解析库,大名鼎鼎的hibernate也使用它来解析xml配置文件.

解析xml,首先要解决assets文件夹下的xml文件解析问题,这个还算比较好处理,使用AssetManager获取Java标准流,然后把他交给dom4j解析就可以了。

但是想要解析res/xml文件夹下的xml就比较麻烦了,熟悉安卓的人应该都知道,打包后的APKres文件夹下除了raw文件夹会原样保留,其他文件夹里的内容都会被编译压缩,为了解析res/xml下的<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值