写目录

  • 1、常见的三种开发模式
    • (1)MVC模式(感觉重点在view)
    • (2) MVP模式 (感觉重点在 Presenter)
    • (3)MVVM模式(感觉重点在VM,viewModel)

1、常见的三种开发模式

首先明确一点:开发模式≠设计模式
开发模式:一个开发项目的方式或标准,RMVC

(1)MVC模式(感觉重点在view)

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑(C)、数据(M)、界面显示(V)分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

当用户对视图层做出操作后,视图层捕获到这个操作,然后把权力交给管理层去进行预处理,从而决定调用哪个模型层去执行相关的业务逻辑,最后视图层观察到模型层变更了后,去重新更新界面

①用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Model 改变状态。

②用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。

③Controller 非常薄,只起到路由的作用,而 View 非常厚,业务逻辑都部署在 View。

优点:
耦合性低,重用性高,部署快,可维护性高,有利于软件工程化管理
缺点:
由于模型model和视图view要严格的分离,给前端程序带来了很大的困难,每次操作需要彻底的测试。
这个模式有个问题就是这三者是之间都有关联,但是model发生变化后被view通过观察者模式监控到,从而渲染新的视图,这也就导致了view强依赖与特定的model层

(2) MVP模式 (感觉重点在 Presenter)

MVP是Model-View-Presenter简称,MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示:


①各部分之间的通信,都是双向的。

②View 与 Model 不发生联系,都通过 Presenter 传递。可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。

③View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。而view又由于view和model之间没有直接的关联,就导致后期model->view的手动同步逻辑麻烦,维护困难。

缺点
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。-旦视图需要变更, 那么Presenter也需要变更了。

(3)MVVM模式(感觉重点在VM,viewModel)

Model:数据模型。普通的javascript数据对象(其实就是一个对象,对象里放了数据),用于对数据的操作。

View:视图。表示UI组件,作用是将模型的数据转换成UI展示出来,也就是前端展示页面。

ViewModel:视图-模型。用于同步Model和View,用于双向绑定数据与页面,就是vue的实例。

MVVM的调用关系和MVP一样。但是,在ViewModel当中会有一个叫Binder。只需要在view的模板语法中,指令式地声明view上的显示的内容和model的哪一块数据进行绑定即可。当ViewModel对Model进行更新的时候,Binder会自动把数据更新到View上去;当用户对View进行操作,Binder也会自动把数据更新到Model上去。这种方式也称为:双向数据绑定。


①vue使用MVVM响应式编程模型,避免直接操作DOM ,降低DOM操作的复杂性。

优点
●低耦合。视图(View) 可以独立于Model变化和修改, -个ViewModel可以绑定到不同的View上, 当View变化的时候Mode可以不变, 当Model变化的
时候View也可以不变。
●可重用性。你可以把一些视图逻辑放在一 个ViewModel里面, 让很多view重用这段视图逻辑。
●可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

【三种常见架构开发模式:MVC、MVP、MVVM】相关推荐

  1. Android架构设计之MVC/MVP/MVVM浅析

    目录 写在前面 一.案例演示 二.MVC模式 2.1.MVC简介 2.2.MVC模式的使用 2.3.MVC模式的缺点 三.MVP模式 3.1.MVP简介 3.2.MVP模式的作用 3.3.MVP模式的 ...

  2. 界面之下:还原真实的MV*模式 -( MVC , MVP , MVVM )

    UPDATE(2015-10-29):更新MV*关于业务逻辑的描述,此处感谢 @LuoPQ @finian 指出错误 作者:戴嘉华 转载请注明出处并保留原文链接( #11 )和作者信息. 目录: 前言 ...

  3. mvvm模式和mvc的区别_Android 开发中的架构模式 -- MVC / MVP / MVVM

    预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 更多面试内容,面试专题,flutter视频 全套,音视频从 ...

  4. java mvc mvp mvvm_一篇文章了解架构模式:MVC/MVP/MVVM

    架构模式的文章很多,好理解的没有几个.大部分文章出现的主要问题有: 没有设定好作用域:前端MVC是改造过的MVC,和后台MVC有明显的区别,不能一概而论 没有实际的例子:实际的例子对应日常的工作,没有 ...

  5. iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER

    看了很多篇关于 iOS 架构模式的,尤其是关于 MVVM 的,都是似懂非懂,无意看见了这篇,发现总结的很到位,很用心,特转载至此,如果英语好,请看原文 iOS Architecture Pattern ...

  6. iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    看了很多篇关于 iOS 架构模式的,尤其是关于 MVVM 的,都是似懂非懂,无意看见了这篇,发现总结的很到位,很用心,特转载至此,如果英语好,请看原文 iOS Architecture Pattern ...

  7. iOS 架构模式 - 简述 MVC, MVP, MVVM

    Make everything as simple as possible, but not simpler - Albert Einstein,把每件事,做简单到极致,但又不过于简单 - 阿尔伯特· ...

  8. iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    在使用 iOS 的 MVC 时候感觉怪怪的?想要尝试下 MVVM?之前听说过 VIPER,但是又纠结是不是值得去学? 继续阅读,你就会知道上面问题的答案 - 如果读完了还是不知道的话,欢迎留言评论. ...

  9. [iOS][转]iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    转自: https://segmentfault.com/a/1190000004680605?ref=myread Make everything as simple as possible, bu ...

最新文章

  1. Springboot总结,核心功能,优缺点
  2. Java综合知识总结_数据库篇
  3. c#_按值传递与按引用传递的区别
  4. 卸载linux下的mysql数据库实例_Linux下卸载MySQL数据库实例教程
  5. 201609计算机控制技术作业三,计算机控制技术大作业2015..doc
  6. 要害怕做事的s9t9
  7. 高速信号传输约翰逊 pdf_高速串口技术如何突破板级连接限制
  8. java图片上传并解析_java的图片上传详解
  9. c++Windows怎样关机【详解】
  10. 基于TILE-GX实现快速数据包处理框架-netlib实现分析
  11. 批量替换 Word 文档某几页
  12. ubuntu修改桌面主文件夹为英文
  13. 防止暴利破解,拒绝ip登陆
  14. 福玛特机器人评测_离子净化!福玛特E-R350W扫地机器人试玩
  15. 全国大学生信息安全大赛线下赛crypto3题解
  16. python 基础知识点 (一)
  17. 王者s19服务器维护,王者S19丨4个必须知道的调整!最后一个不知没法玩!
  18. 网络检测--命令检测网络
  19. Java自动化测试菜鸟篇六之ZTestReport报告模板及其Java文件
  20. 北航与西安交大计算机专业对比,都在关注!哈工大、西安交大、北航等五大双一流高校是否值得报考...

热门文章

  1. 购物车模块redis和mysql_redis解决购物车的问题
  2. 矩形区域的泊松方程,深度学习模拟差分法
  3. 2022留学生落户上海怎么办理社区公共户?
  4. 直播平台搭建iOS 版本打包上架
  5. ArduPilot飞行前检查——PreArm解析
  6. Vanishing gradient and activiation funcation(ReLU、Maxout)
  7. 地理生物结业考_不到30天,初二学年地理、生物结业考试开考,老师们说……...
  8. Altium Designer 18中的PCB Editor–Board Insight Modes
  9. Hadoop新手篇:hadoop入门基础教程 1
  10. Altium Designer制作原理图库不显示Comment和Designator