Android:设计模式

文章参考来源1
文章参考来源2
文章参考来源3

MVC

Model 数据来源,管理业务数据逻辑,读取数据等

View 视图

Controller 单例模式,处理业务逻辑,负责改变Model和View

经典的MVC架构是 用户点击View,View将用户输入转发给Controller,Controller处理业务逻辑完后让Model处理对应的数据逻辑,Model更改完数据后让View来展示

而Android版本的MVC,View为xml,Activity和Fragment则是充当了Controller,对View和Controller都产生了耦合

Android 要想实现标准的MVC应该这样
定义一个数据类,作为业务数据
定义一个Activity,作为View,并监视组件,转发用户输入,适时调用Controller的方法
定义一个Controller,提供业务逻辑处理,提供一个接口给Model用于更新View
定义一个Model,处理数据逻辑,并回调接口,更新View
在这里插入图片描述
View与Controller是相互持有,因为View需要持有Controller才可以调用其方法,
而Controller必须持有View才可以改变它,Model没有持有View的必要。

优点:文件少,适合小项目
缺点:项目负责时,文件体积大、View和Controller的耦合度高

MVP

Model 数据来源

View 视图

Presenter 隔离联系人 View触发事件时调用Presenter方法,由presenter完成逻辑后改变Model和View

Android版本MVP 与MVC不同在于,MVC的Model更改完数据后,view会观察model变化而进行改变,而MVP则是Model必须通过presenter来更新View
提供两组接口A、B,
A用于更改View和监听View输入事件,Presenter接收该组接口的实例,用于回调更改View
B用于Model更新后回调Presenter的方法,间接更改View
View需要更改数据时也会调用Presenter提供的接口来调用Model
在这里插入图片描述
View和Model禁止直接通信(与MVC的区别)
Presenter通常面向界面与界面成一对一的关系,而Controller通常面向业务,服务于一个业务下的所有界面。

优点是职责清晰,接藕。
缺点是接口多,文件多,代码多。

MVVM

ViewModel:负责保存数据,处理逻辑和改动数据

View:展示数据、监听ViewModel的数据来改变自己,事件触发后直接调用ViewModel,由ViewModel处理逻辑

Model:接口返回数据的数据模型和本地存储数据模型
在这里插入图片描述
ViewModel不持有View,而Presenter持有View
MVVM为数据驱动,MVP为事件驱动

优点:逻辑清晰,代码文件少
缺点:数据绑定增加了bug,复杂页面时model会很大,长期持有影响释放内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值