对MVP、MVVM、DataBinding、ButterKnife、Dagger2的初步学习

对MVP、MVVM、DataBinding、ButterKnife、Dagger2的初步学习

MVP & MVVM

MVP

view + presenter + model = MVP
1. 简化 activity,逻辑操作都交给 presenter;
2. view 和 model 不直接联系,通过 presenter 联系:
3. view 与 presenter,model 和 presenter 都是双向的;

优点:解耦、便于单元测试。


MVVM

view + viewModel + model = MVVM

在 MVP 基础上加入 DataBinding,通过强化 layout 布局文件功能,实现双向绑
定,抽离出视图逻辑,进一步简化 activity。


DataBinding & ButterKnife

DataBinding(官方、MVVM)

功能:分担 activity 的视图逻辑职责,在布局文件中直接绑定数据,不再需要 findViewById、OnClick 等,并且实现双向绑定;


以前 layout 文件是静态的,只能通过代码进行修改,大量的事件绑定和findViewById 以及视图的逻辑充斥在 Activity 中;


MVP 虽然实现了视图逻辑和视图操作的解耦,但还是需要大量的代码对 layout 设置属性,比如说 TextView 的 setText;


但 MVVM 的 Databinding ,把 layout 里面控件的某些属性绑定对应的 bean,把操作的控件看成 bean 对象,只需要对 layout 绑定的 bean 进行修改,layout 就会随之改变,同样的,控件的数据发生改变,绑定的数据也会随之改变;

这里的 bean 就是 MVVM中的 Model,那么对 bean 进行逻辑处理的就是VM,这样我们主需要关心 M 和 VM 之间的交互了。

备注:DataBinding 目前还处于初级阶段,可能还存在一些问题。

[官网]


ButterKnife(第三方)

优势:ButterKnife 没有使用反射,而是 Java Annotation Processing 技术,在Java 代码编译成 Java 字节码的时候就已经处理了@Bind、@OnClick 这些注解。


Annotation processing 是在编译阶段执行的,它的原理就是读入Java源代码,解析注解,然后生成新的Java代码。新生成的Java代码最后被编译成Java字节码,注解解析器(Annotation Processor)不能改变读入的Java 类,比如不能加入或删除Java方法。


特点:无性能损耗,利用 Android ButterKnife Zelezny 插件可以直接导入布局文件对应的 findViewById,OnClick 等操作,简化代码输入量;

[官网]

[最新ButterKnife框架原理]


Dagger2(依赖注入)

网上比较好的讲解:

[Android:dagger2让你爱不释手-基础依赖注入框架篇]

[Android:dagger2让你爱不释手-重点概念讲解、融合篇]

[Android:dagger2让你爱不释手-终结篇]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值