当前位置:首页 > 科技  > 软件

软件设计模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

来源: 责编: 时间:2023-10-23 17:06:00 238观看
导读软件架构设计是将软件一些共有的特征转换为满足业务需求和技术要求的结构化方案的过程。软件架构设计的目的是为了实现系统的长期可维护性、可扩展性、可靠性和安全性,以满足业务需求和未来可能的变化。在过去的几年里

软件架构设计是将软件一些共有的特征转换为满足业务需求和技术要求的结构化方案的过程。软件架构设计的目的是为了实现系统的长期可维护性、可扩展性、可靠性和安全性,以满足业务需求和未来可能的变化。JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

在过去的几年里,软件架构的设计模式层出不穷,每一个模式的出现,都是试图想使代码更可读、更容易于测试、更易于维护以及让开发人员更轻松。但同时,每个模式的出现也都有适应的场景和优劣。JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

本文主要将MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER等,几个常见的设计模式做一个汇总的介绍。JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

1.MVC

JOF28资讯网——每日最新资讯28at.com

MVC是一种体系架构,经典MVC模式中,M是指模型,V是视图,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View就是用户界面。JOF28资讯网——每日最新资讯28at.com

使用MVC的框架如:SpringMVC、Ruby on rails、Django、AngularJS、React、Express.js。JOF28资讯网——每日最新资讯28at.com

2.MVP

JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

MVP的全称是Model-View-Presenter,是从经典的MVC模式演变而来,也是一种包含模型、视图和视图的体系结构。JOF28资讯网——每日最新资讯28at.com

MVP和MVC的基本思想有许多相通的地方,例如:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。JOF28资讯网——每日最新资讯28at.com

但MVP与MVC有着一个重大的区别在于MVP中视图中不包含任何逻辑,只是作为应用程序的外观,Presenter充当模型和视图之间的中间人。MVP中的View并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过Controller。JOF28资讯网——每日最新资讯28at.com

在Android开发中,MVP模式克服了MVC模式的这些挑战,并且提供了一种简单的方法来构造项目代码。JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

3.MVVM

JOF28资讯网——每日最新资讯28at.com

MVVM是Model-View-ViewModel的简写。其本质是MVC的改进模式。主要区别在于视图和模型,视图和模型保存了从模型转换数据的代码,并直接将数据变化发送到视图,有助于保持每个模型直接与其各自的视图交互,而不必担心不同的模型影响到其它视图。JOF28资讯网——每日最新资讯28at.com

MVVM模式有助于将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离。保持应用程序逻辑和UI之间的清晰分离有助于解决许多开发问题,并使应用程序更易于测试、维护和演变。它还可以显著提高代码重用率,并允许开发人员和UI设计人员在并行开发各自的应用部分时能够更轻松地进行协作。JOF28资讯网——每日最新资讯28at.com

使用MVVM的框架如:MVVMLight、Cinch、Prism、Caliburn、MVVM Helpers、MVVMFoundation。JOF28资讯网——每日最新资讯28at.com

4.HMVC

JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

HMVC(全称Hierarchical-Model-View-Controller),也可以叫做 Layered MVC。顾名思义,就是按等级划分的 MVC 模式,简单的解释就是把MVC又细分成了多个子 MVC,每个模块就分成一个 MVC。JOF28资讯网——每日最新资讯28at.com

使用 HMVC 的好处就是可以降低各个功能模块之间的耦合性,提高代码复用性,使得每个功能都可以独立出来,每个模块都有自己的 MVC 结构,这就有点像ActiveX控件,每个控件都有自己的行为,控件之间互不影响。这种架构风格的将应用程序调整为更小、更易于管理、可以独立运行的模块。由于在创建新模块时控制器能够相互调用,因此要在应用程序中进行功能扩展更加容易。JOF28资讯网——每日最新资讯28at.com

许多PHP框架是基于HMVC,例如:FuelPHP、PHPPixie、ClanCats。JOF28资讯网——每日最新资讯28at.com

5.MVA

JOF28资讯网——每日最新资讯28at.com

MVA(全称:Model View Adapter),MVA和MVC都试图解决同样的问题,但MVA与MVC有一个区别:MVC的模型、视图和控制器的关系形成一个三角形,模型、视图和控制器作为顶点,一些信息可以在模型和视图之间流动,而不受控制器的直接控制;而MVA使用适配器(Adapter)代替控制器,MVA通过线性地安排模型、适配器或中介控制器和视图,而没有模型和视图之间的任何直接连接,在这种架构中,模型和视图不知道彼此的存在。在单个模型和视图之间,可以有许多适配器,它们修改来自模型的信息在视图中的呈现方式。JOF28资讯网——每日最新资讯28at.com

当我们需要将数据与GUI分离时,MVA就很有参考价值。在一些移动应用开发的框架中经常被使用。JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

6.MVI

JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

MVI与MVP和MVVM相比,它的设计模式考虑到了反应式编程。MVI模式的数据流是单向的,从Model到View。View不能直接修改状态,而是通过发送Intent到Model来更新状态并将其发送回View。JOF28资讯网——每日最新资讯28at.com

MVI架构模式包括三个主要组件:Model(模型)、View(视图)和Intent(意图)。JOF28资讯网——每日最新资讯28at.com

  • Model表示应用程序的状态,是一个不可变的数据结构,保存了渲染UI所需的所有信息;
  • View负责渲染UI,从Model接收到状态信息并更新UI;
  • Intent表示用户执行操作的意图,用以触发改变Model中的状态;

JOF28资讯网——每日最新资讯28at.com

7.VIPER

JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

JOF28资讯网——每日最新资讯28at.com

VIPER(全称:View-Interactor-Presenter-Entity-Router) 即:视图、交互器、演示器、实体、路由器。VIPER是由Uber的iOS开发团队提出的一种适用于iOS应用程序的设计模式。VIPER架构的目的是将应用程序分解为不同的模块,使得应用程序更容易维护和扩展,并且各个模块之间相互独立,减少了耦合性。JOF28资讯网——每日最新资讯28at.com

VIPER架构模式包含以下五个模块:JOF28资讯网——每日最新资讯28at.com

  • View(视图):负责用户界面的展示和响应用户操作,它与用户交互,并将用户的操作传递给Presenter。
  • Interactor(交互器):负责应用程序的业务逻辑,它提供了数据和功能的接口,供Presenter使用。
  • Presenter(演示者):负责将View和Interactor连接起来,它接收View传递过来的用户操作,然后根据业务逻辑调用Interactor提供的接口,最后再将处理结果展示到View上。
  • Entity(实体):负责存储应用程序的数据,它包含了应用程序中需要处理的所有数据。
  • Router(路由):负责处理不同模块之间的跳转和导航,它根据Presenter的指令,决定展示哪个View,同时也负责数据的传递。

VIPER架构的优点是明确的职责分离和解耦,每个模块都有明确的职责和接口,方便团队合作开发和维护。它还可以提高应用程序的可测试性,每个模块都可以进行单元测试,减少了代码的出错率。JOF28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-14614-0.html软件设计模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 当年很流行,现在已经淘汰的前端技术,请不要再继续学了!

下一篇: OpenJDK JMH——Java程序的基准测试工具

标签:
  • 热门焦点
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 三言两语说透柯里化和反柯里化

    三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 微信语音大揭秘:为什么禁止转发?

    微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • Python异步IO编程的进程/线程通信实现

    Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 新电商三兄弟,“抖快红”成团!

    新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的“新电商三兄弟”成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • 网红炒股不为了赚钱,那就是耍流氓!

    网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 2纳米决战2025

    2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • 2021中国国际消费电子博览会与青岛国际软件融合创新博览会新闻发布会隆重举行

    2021中国国际消费电子博览会与青岛国际软件融合创新博览会新闻发布会隆重举行

    9月18日,2021中国国际消费电子博览会与青岛国际软件融合创新博览会新闻发布会在青岛国际新闻中心隆重举行。发布会上青岛市政府领导联袂出席,对本次双展会情
  • 北京:科技教育体验基地开始登记

    北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top
Baidu
map