mvp关联activity生命周期_Android中MVC,MVP,MVVM详解

MVC

a8dd51949c6abb340a3849213a81a275.png

Model:实体类

View:xml

Controller:activiity

优点:

耦合性低:视图层和业务层分离

重用性高:当业务逻辑变更的时候,不需要变更View和Model,只需要更换Controller

缺点:

视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的。

MVP:

6308f2d5b71f70346c80a75c69775bde.png

Model:主要提供数据存取功能。

View:可能是指Activity、Fragment或者View。

Presenter:通过Model存取数据,连接View和Model,从Model中取出数据交给View。

构造方式:

1. 设定BaseView 和BasePresenter

2. 定义抽象接口分别继承以上的接口,制定我们view和presenter中的方法。

3.设置model类来获取数据。

4.新建presenter类实现接口中的presenter接口,获取view 和model的对象,实现逻辑业务

5.activity实现接口中的view接口,获取presenter对象,通过调用presenter实现view中的方法
优点:

1.降低了耦合度,实现了model和view的完全分离

2.Presenter 可以复用,一个 Presenter 可以用于多个 View,而不需要更改 Presenter 的逻辑

3.View 可以进行组件化,在MVP当中,View 不依赖 Model

缺点:

1.Presenter 中除了应用逻辑以外,还有大量的 View->Model,Model->View 的手动同步逻辑,造成 Presenter 比较笨重,维护起来会比较困难;
2.Presenter 与特定的视图的联系过于紧密,一旦视图需要变更,那么Presenter也需要变更了。

MVVM

bb7b1fd0fd3e0591db5845a1060d1df7.png

Model:主要提供数据存取功能。

View:可能是指Activity、Fragment或者View。

viewModel:用于将 Model 和 View 进行关联,我们可以在 View 中通过 ViewModel 从 Model 中获取数据;当获取到了数据之后,会通过自动绑定,比如 DataBinding,来将结果自动刷新到界面上。

构造方式:

1:在xml页面做databinding双向绑定

b2848d74588c0718623649c8f9733dc7.png

2.建立可以观察的model

8d05d0da6040b841c18ebdc183873546.png

3.新建viewmodel绑定view和model并写入所需要的业务逻辑和事件

e81e3111385a733e3955354c06aa5885.png

4.在activity获取viewmodel实例并通过viewmodel实现方法

优点:

1.低耦合:视图(View)可以独立于Model变化和修改

2.可重用性:你可以把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图逻辑。

缺点:

1.对于简单的图形界面不实用

2.如果多个页面共用一个model(个人也不建议这么干),会导致model数据变多,内存开销变大,影响性能;

3.view和model的绑定,使页面异常追踪变得不方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值