EP12-MVVM和DataBinding

MVVM和DataBinding

印尼钱包可能采用新的开发模式,所以今天了解一下MVVM和DataBinding。

目前的Android程序结构,常见下面三种开发模式:

MVC:

View:对应于xml布局文件
Model:实体模型
Controllor:对应于Activity业务逻辑,数据处理和UI处理

但是XML的View功能太弱,很多视图都要放在Activigy中完成,Activity还承担一些控制逻辑。所以Activity就成了View+Controller。

MVP:

View: 对应于Activity和xml,负责View的绘制以及与用户交互
Model: 实体模型
Presenter: 负责完成View于Model间的交互和业务逻辑

这样的话Activity就能成为真正的View而不是View和Control的合体,Activity只做UI相关的事。但是Activity需要实现各种跟UI相关的接口,同时要在Activity中编写大量的事件,然后在事件处理中调用presenter的业务处理方法。

MVVM:

View: 对应于Activity和xml,负责View的绘制以及与用户交互
Model: 实体模型
ViewModel: 负责完成View于Model间的交互,负责业务逻辑

MVVM的目标和思想MVP类似,利用数据绑定(Data Binding)、依赖属性(Dependency Property)、命令(Command)、路由事件(Routed Event)等新特性,打造了一个更加灵活高效的架构。
MVVM有这样几个优点:

  • 数据驱动(ViewModel只要关注数据和业务逻辑,不需要和UI或者控件打交道)
  • 低耦合度(数据是独立于UI的,ViewModel只负责处理和提供数据,控件变了也无所谓)
  • 更新UI(可以在工作线程中直接修改View Model的数据,剩下的DataBinding搞定)
  • 可复用性(一个View Model复用到多个View中,同样的一份数据,用不同的UI去做展示)

DataBinding

MVVM是舶来品,从Web前端的Argular而来,Angular有DataBind功能。
Android之前也有一些库比如RoboGuice、ButterKnife实现了类似DataBind的依赖注入框架实现了类似的功能。
今年4月Android UI团队发布了一个DataBinding的库。
是不是能应用到印尼钱包中呢。明天我再了解一下。

Reference:
[1]https://realm.io/cn/news/data-binding-android-boyar-mount/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容