这是一个创建于 2671 天前的主题,其中的信息可能已经有所发展或是发生改变。
刚刚入门,学艺不精,请多指教。看了很多介绍的文章,只是从技术的角度来介绍,但是没说明白为什么会出现这些技术,我试图去理解一下:
常用架构:
mvc,mvp,mvvm 是常见的架构模型,在 github 上很多流行的代码都有。架构不一样,在可扩展性、可测试性和可维护性上肯定都不一样。在简单的 app 中,activity 中包含了 view/model/controller。如果功能很复杂,activity 文件就是几千行。后续就需要解耦,把视图拿出来放在 viewmodel 中,把模型拿出来放在 model 中,然后 activty 中访问 viewmodel 和 model。
常用库:
rxjava,rxdatabinding,dragger2。我没有在项目开发中实际使用过,看文档看代码看的头大。rxjava 是做异步通讯的,在有的项目中,用户点击按钮可以用 rxjava 来实现,而不用监听。rxdatabinding 有点像 jsp,把 bean 写到 layout 的 xml 文件中,这样 activity 代码很少,但是 IDE 在编译的时候对 xml 很少检查,为了这点好处根本不值得。dragger2 是用来依赖注入的,类似于 java 中 spring 库的概念。在很多对象需要在 application 层面共享的时候,才考虑用 dragger,注解之后的代码看起来很简洁,但是读起来很痛苦。总之,rxjava 是好的,databinding 问题比较多,draggger2 要想清楚哪些对象需要共享出来。
结合起来看,mvvm 和 mvp 中多余出来 viewmodel、model 都做成依赖注入,使用 dragger。应用处理逻辑可以用 rxjava 来完成。当然,mvvm 和 mvp 完全不使用 draager 和 rxjava 也可以实现。正常的进化步骤,最开始:什么架构都不用,把所有的代码都写在 activity 中,到第二层 mvvm 或者 mvp,将代码进行分离,多写 viewmodel 和 model 类,到第三层采用 dragger2,把共享单例变量拿出来写出 component 和 module。
|
|
1
Chrisplus 2017-08-07 09:04:35 +08:00
rx 不仅仅是做异步通讯的。rx 的作用在于提供给开发者一个基于观察者模式的事件流框架,在这里异步事件可以非常方便的进行整合操作(操作符),而无需关注底层的实现诸如线程安全等。另外 rx 也可以让基于触发观察同一类事件的编码尽量集中而非分散到各处,使得代码更加清晰,便于维护。
|
|
|
2
vjnjc 2017-08-07 12:10:38 +08:00
我觉得 view 层在 android 是 xml。。。 dragger 用过,感觉不是为了共享,而是为了解耦 rxjava 和 mvp 还在找机会试
|