Android框架模式
参考大佬写的文章:https://www.jianshu.com/p/f17f5d981de7
1、MVC模式
Model:模型层,负责处理数据的加载或存储
View:视图层,负责界面数据的展示,与和用户进行交互
Controller:控制层,负责逻辑业务的处理;连接View层和Model层,完成View层和Model层的交互
这么说太抽象了,我们举个栗子:
点击按钮数字增加
Model层就是数字的保存和更新,更新通知的是Activity,View层就是对应布局的xml文件,Activity充当Controller层,它接收view层的点击,然后通知model层你该增加了。
大佬的图特别直观:
- 优点
View层和Model层解耦,通过Controller层来进行联系
职责划分明确,有利于代码的维护 - 缺点
Activity除了要连接View层(加载布局、接受用户操作),还要承担Controller层的职责(业务逻辑的处理)。它和View,Model层是有交互的,并没有做到完全分离,会产生耦合。
界面变多或者逻辑太复杂,Activity会不堪重负。
2、MVP模式
大家用的基本上都是它。为了分离Activity中的View层和Controller层,又进一步对Activity做了瘦身。
Model:模型层,负责存储、检索、操纵数据。
View:视图层,负责界面数据的展示,与用户进行交互。
Presenter:呈现层,连接View层和Model层,处理业务逻辑。
我们还是举这个例子:
点击按钮数字增加
Model负责数据的保存和更新,更是通知的是Presenter。(在MVC模式中通知的是Activity,也就是Controller,但是在Actvity中还是和View发生了交互,而这里不会)
View层是Activity,同时持有Presenter的引用。
Presenter层是接口,负责业务逻辑处理。
- 优点
① 通过Presenter实现数据与视图之间的交互,完全隔离了View层和Model层。
② 对Activity成功进行了瘦身。
MVC和MVP模式的区别
3、MVVM模式
Model:模型层,负责处理数据的加载或存储。
View:视图层,负责界面数据的展示,与用户进行交互。
ViewModel:视图模型,负责完成View于Model间的交互,负责业务逻辑。
这三种模式的定义都差不多,但是它的内部实现不一样。
- 优点
Model层和View层耦合进一步降低 - 缺点
程序难以调试,界面出现异常时,可能是View的问题,也肯是Model的问题,定位出异常比较困难。
最新文章
- 编译osgEarth2.8+VS2013+CMake3.4.0在Release版本的问题
- day10---multiprocess 多进程
- 使用ADO.NET执行SQL脚本
- Android Actitity的生命周期
- revert merge会出现的问题
- IOS设计模式的六大设计原则之开放-关闭原则(OCP,Open-Close Principle)
- How to create a project with existing folder of files in Visual Studio?
- UIActionSheet 这样写为什么显示为空白 ???
- hdu 2063 过山车(二分图最佳匹配)
- EL表达式中如何截取字符串
- Bzoj 3343: 教主的魔法 分块,二分
- iOS中常用的四种数据持久化技术
- golang的Channel
- 剑指Offer_6_从尾到头打印链表
- linq用法整理
- initWithFrame方法的使用
- 关于adaboost分类器
- centos 7 安装svn客户端
- ccf201703-1分蛋糕
- Oracle SQLPLUS提示符设置