参考大佬写的文章: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. laravel 左联报错问题

  2. select模块

    select模块 1.      select模块 源:select.py This module provides access to the select() and poll() functio ...

  3. ZOJ4102 Array in the Pocket(2019浙江省赛)

    贪心~ #include<bits/stdc++.h> using namespace std; ; int a[maxn]; int b[maxn]; int vis[maxn]; se ...

  4. PAT A1114 Family Property

    用并查集处理每个家庭的信息,注意标记~ #include<bits/stdc++.h> using namespace std; ; bool visit[maxn]={false}; i ...

  5. Django中的prefetch_related()函数优化

    对于多对多字段(ManyToManyField)和一对多字段, 可以使用prefetch_related()来进行优化 prefetch_related()和select_related()的设计目的 ...

  6. rails work

    4.2 Say "Hello", Rails problem weppack not install solve run the command rails webpacker:i ...

  7. C++11类内static成员变量声明与定义

    众所周知,将一个类内的某个成员变量声明为static型,可以使得该类实例化得到的对象实现对象间数据共享. 在C++中,通常将一个类的声明写在头文件中,将这个类的具体定义(实现)写在cpp源文件中. 因 ...

  8. uniapp - 手机调试 ( vivo )

    打开开发者选项,打开USB设置,把默认USB选项改成MIDI模式,就可以检测到手机

  9. Navigation源码(一) move_base最全解析

    一.概述 目测是全网最全的解析,花了几个小时通读并整理的,供大家参考学习. 概况的话可以看下古月居 https://www.guyuehome.com/270,其实它是翻译官方的,英语ok的可以去ro ...

  10. Python简单程序爬取天气信息,定时发邮件给朋友【高薪必学】

    前段时间看到了这个博客.https://blog.csdn.net/weixin_45081575/article/details/102886718.他用了request模块,这不巧了么,正好我刚用 ...