MVC MVP MVVM

MVC MVP MVVM

MVC MVP MVVM

MVC MVP MVVM浅谈,MVC、MVP和MVVM都是为了解决界面呈现和逻辑代码分离而出现的模式。MVC作为最经典的开发模式之一,经典的MVC模式是M-V-X模式的老祖宗,MVP和MVVM都是在MVC的基础上演化而来,和MVC框架模式一样,Model模型处理数据代码。这些架构的目的都是为了提高代码的复用率、降低代码的耦合度、便于模块测试、版本的迭代更新,下面对每个架构进行简单的介绍与使用。

  • MVC
  • MVP
  • MVVM

MVC

MVC
M:模型 业务逻辑处理
V :视图 处理数据显示
C: 控制器 Activity处理用户交互问题

特点:①:耦合性低。②:可扩展性好。③:模块划分明确。
activity厚重,业务扩及复杂。实际上Activity即显示视图,又控制逻辑。
View既依赖于Controller又依赖于Model,解耦程度不足。

MVP

MVP
M:依然是业务逻辑和具体实体模型。
V:对应activity,负责view的绘制以及用户交互。
P:负责完成View与Model质检的交互。

区别: Presenter将View与Model分离,使得View和Model之间不存在耦合,同时也将业务逻辑从View中抽离。所有的业务逻辑由Presenter主持者来控制。
数据Model通过Presenter和View交互,比MVC耦合性更低。

优点:模块职责划分明显,增加可测试性与可扩展性,隐藏数据,降低了程序的耦合度,提高了代码的重用性与灵活性。
缺点:视图的渲染在Presenter中,所以视图和Presenter的交互会过于频繁。如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。
一旦视图需要变更,那么Presenter也需要变更了

MVVM

MVVM

1View:对应于activity和xml,负责view的绘制和用户交互。
2.model:实体模型
3.ViewModel:负责完成View和Model间的交互,负责业务逻辑。

MVVM模式:采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。
ViewModel主要包括界面逻辑和模型数据封装,Behavior/Command事件响应处理,绑定属性定义和集合。

优点:便于代码移植,兼容MVC,方便测试,降低了程序的耦合度,提高了代码的重用性。
缺点:类会增多,ViewModel会越加庞大,调用的复杂度增加。

书到用时方恨少,纸上得来终觉浅。希望可以帮助到您。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115049.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月30日 下午4:00
下一篇 2021年9月30日 下午4:00


相关推荐

  • 计算机cpu后面字母代表什么意思,英特尔CPU型号中最后的字母什么意思?如有不懂欢迎驻足停留…「建议收藏」

    计算机cpu后面字母代表什么意思,英特尔CPU型号中最后的字母什么意思?如有不懂欢迎驻足停留…「建议收藏」今天给大家主要讲讲Intel(英特尔)处理器的小常识。可能说过比较多遍了,但是今天说的比较具体,对大家以后要买CPU得有个参考。在Intel处理器中,有各种型号的U,这些型号中后缀都自带字母,比如K、X、M等等,不过还要区分笔记本和台式,相对来说笔记本电脑带的更多,今天就给大伙好好普及一下,如有遗漏,欢迎你们的替补喔。笔记本电脑:M:一般是双核处理器。M前面一位数字是0,就是标准电压处理器(功耗为…

    2022年6月21日
    43
  • 静态变量存储在那个区? – 转[通俗易懂]

    静态变量存储在那个区? – 转[通俗易懂]一时间忘咯然后就去转载..静态变量存储在__区A全局区B堆C栈D常量区参考答案:A知识点内存到底分几个区?1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由os回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域…

    2022年6月14日
    46
  • JUnit5 + JMockit 知识整理

    JUnit5 + JMockit 知识整理JUnit5https junit org junit5 基本概念 JUnit5 JUnitPlatfor JUnitJupiter JUnitVintage JUnit5 框架 复杂启动并加载运行 TestCases JUnitJupiter JUnit5TestCa 开发模型与接口 JUnitVintage

    2026年3月17日
    1
  • [CV] Structure from motion(SFM)- 附我的实现结果

    [CV] Structure from motion(SFM)- 附我的实现结果【更新】我的新博客:www.ryuzhihao.cc,当然这个csdn博客也会更新本文在新博客中的链接:点击打开链接完成时间:2017年2月27日博客时间:2017年4月26日去年,我有幸了解到image-basedmodeling的相关知识。作为一个大三本科生,虽说自己此前也做过一些相关工作,但是要自己实现Structuref…

    2022年6月20日
    29
  • Flavor ‘xxxx’ has unknown dimension ‘app’.和Unable to load class ‘org.gradle.api.internal.compo

    Flavor ‘xxxx’ has unknown dimension ‘app’.和Unable to load class ‘org.gradle.api.internal.compo

    2021年9月30日
    48
  • doxygen 命令_doxygen使用

    doxygen 命令_doxygen使用前言下面主要讲解 linux 下 Doxygen 命令行实现 html 文档生成的操作 当然也有界面版本操作方式 linux 下安装 doxygen gui 即可通过 doxywizard 开启界面操作 windows 下也可以通过 doxywizard exe 界面进行配置操作 具体的界面操作请参考其他网上文章 不过有一句话需要说明 会命令行操作的 应该都会界面操作 而会界面操作的就不一定会命令行操作了 windows 下的

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号