Android架构

关于公司项目使用mvvm的一些思考

2016-11-07  本文已影响48人  初见破晓

最近,公司的项目改版2.0。从原来的无架构换成了mvvm,经过了两个星期的开发,对于新的架构,有了自己的一些看法。

使用了android 的databinding上手起来不是特别难,基本看一遍官网的教程也就能领会了。学习成本不大。但是在开发中,会出现编译器相关的一些错误,但没有强迫症的话应该都能克服。先说说我们现在用的架构吧,我们把mvvm中的vm也就是view-model当做controller去处理(有点像jsp)界面的数据和所有的业务逻辑写到了vm中,下面是网络接口。view层使用databinding并不够深入。比方说,一个activity就会有一个xml与之对应,通常来说这个xml会绑定一格control和一个context, 这个control就是对应的是vm、 context就是这个activity。包结构没有按照功能分开,而是将所有的control放到一块。
Paste_Image.png
按照上面的简单描述,我们在开发中会碰见一些问题
以上四点就是我在新的项目中发现的几点我认为在开发中特别扭的地方,问题主集中在了vm与逻辑相关,xml却又绑定了这个vm,导致复用成了问题;vm的逻辑过多(回调,内部类太多、代码太乱);view组件无组件化思想,xml结构复杂。

其实,避免以上的问题,处理方案并不复杂。在现在的vm(control)父类再加上一层viewmodel,这个vm只与view相关, 不参与任何的业务逻辑。业务的model作为这种viewmodel的子类。并且vm应该细化到view的每一个组件,这样baseviewmodel中可以包含一些组件的vm,组成一个 功能完成的viewmodel。
具体的业务实现在viewmodel的子类去完成,尽量使用rxandroid这种框架,在项目中,由于种种原因,客户端有事会访问四五个接口之后,才拿到想要的数据;有时,获取的信息需要客户端进行处理,排序,挑选,甚至假的分页处理。只要是写业务逻辑,代码就是一层一层的回调,中间插入这无数多的错误处理,简直醉了。想我们这种‘不喜欢‘’用接口隔离,使用rx是最佳的选择了


Paste_Image.png

上面的图例说明了对于现在存在问题架构的改进

总结一下
上一篇 下一篇

猜你喜欢

热点阅读