参考大佬写的文章: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的问题,定位出异常比较困难。

Android框架模式的更多相关文章

  1. 简述MVC框架模式以及在你(Android)项目中的应用

    标题是阿里电话面试的问题,一直以为自己很清楚MVC模式,结果被问到时,居然没法将MVC和Android中各个组件对应起来,所以,面试肯定挂了,不过面试也是学习的一种方式,可以知道大公司看中什么,以及自 ...

  2. [转]框架模式 MVC 在Android中的使用

    算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了Android的基础知识.越到后面的学习越感觉困难,一来是自认为android没啥可学的了(自认为的,其实还有很多知识科学), ...

  3. 框架模式 MVC 在Android中的使用

    算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了Android的基础知识.越到后面的学习越感觉困难,一来是自认为android没啥可学的了(自认为的,其实还有很多知识科学), ...

  4. Android MVP框架模式

    结合前一篇MVC框架模式 为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Mode ...

  5. IOS 与ANDROID框架及应用开发模式对照一

    IOS 和ANDROID操作系统都是眼下流行的移动操作系统,被移动终端和智能设备大量採用,两者都採用了先进的软件技术进行设计,为了方便应用开发两者都採用了先进的设计模式. 两者在框架设计上都採用了什么 ...

  6. IOS 与ANDROID框架及应用开发模式对比一

    IOS 和ANDROID操作系统都是目前流行的移动操作系统,被移动终端和智能设备大量采用,两者都采用了先进的软件技术进行设计,为了方便应用开发两者都采用了先进的设计模式.两者在框架设计上都采用了什么技 ...

  7. android MVP模式介绍与实战

    android MVP模式介绍与实战 描述 MVP模式是什么?MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数 ...

  8. App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南

    面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...

  9. Android开发模式之MVC,MVP和MVVM的简单介绍与区别

    相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候 ...

随机推荐

  1. springboot devtool热部署的一个大坑

    spring.devtools.restart.poll-interval=3000ms spring.devtools.restart.quiet-period=2999ms 别问我为什么,问就是一 ...

  2. 十五 OGNL的入门

    一.访问对象的方法

  3. JS闭包(2)

    利用闭包的特点,我们可以在封装自己的模块的时候只向外暴露我们模块中的数据,而不让其修改. 1.第一中封装的方式,新建一个myModule.js文件,这个模块的作用是对外部提供明天和后天的天气. 在my ...

  4. vbs 入门

    dim  定义变量名 dim name------------- dim name,agename = "worf"age = 20 msgbox   输出 msgbox name ...

  5. Codeforces Round #551 (Div. 2)D(树形DP)

    #define HAVE_STRUCT_TIMESPEC#include <bits/stdc++.h>using namespace std;int val[300007],num[30 ...

  6. [原]HelloWorld

    几乎所有程序员的编程都是从写HelloWorld开始的,作为新开的Blog我还是照旧吧. 首先需要肯定的是博客园的管理员做事很高效,我是22:08申请的,结果22:32就审核通过了,理论上讲申请审核时 ...

  7. vue动画钩子

    <template> <div class="hello"> <div class="toggle" @click="f ...

  8. linux 从一台服务器向另台服务器复制文件

    使用scp命令: sudo scp -P 2222 username@192.168.0.200:/home/db/db_data.sql.gz /home/db/db_data.sql.gz scp ...

  9. 工具 - brackets

    常用插件 blueprint beta file tree view indent guidelines

  10. nginx_1_初始nginx

    一.nginx简介: nginx是一个性能优秀的web服务器,同时还提供反向代理,负载均衡,邮件代理等功能.是俄罗斯人用C语言开发的开源软件. 二.安装nginx step1:安装依赖库 pcre(支 ...