mvc

model模型-视图view-控制器controller

视图可以直接访问模型,所以视图里面包括模型信息,mvc关注的是模型不变,所以在mvc中,模型不依赖视图,但是view是依赖model的

原理:

模型层改变时,视图层直接随之改变,视图层传送数据到控制层,控制层接受数据,编写业务逻辑更新模型层,从而再次更新视图

特点:

优点:抽离出controller,模块化程度高,新增编辑功能只需要添加一个controller

缺点:测试困难,view无法组件化

2.mvp

mvp是模型-视图-提供者 建立在mvc基础上

特点:

优点:视图和模型完全分离,可以修改视图,不影响模型

   可以更高效的使用模型,因为所有交互都在presenter中

   一个presenter提供者可以用于多个视图,而不需要改变presenter逻辑。这个特效十分有用,因为视图的变化总是比模型的变化频繁

   把逻辑放在presenter中,那么可以脱离用户接口做单元测试

   

缺点:提供者和视图的耦合度太高,一旦视图发生大改变,提供者Presenter随之改变

原理:

建立在mvc模型基础上,用presenter(提供着)取代controller(控制器),通信方向发生改变,视图和模型不再直接通信,视图和提供者双向通信,模型和提供者双向通信

在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用! 不仅如此,我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试--而不需要使用自动化的测试工具。

在MVP里,应用程序的逻辑主要在Presenter来实现

MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

mvvm

模型-视图-视图模型,建立在mvp模型上,将提供者presenter(提供者)改成了ViewModel视图模型..代表:vue.js

特点:

优点:简化测试,提供可维护性

缺点:不适合简单的图形界面,太复杂的视图模型维护成本高,数据没有办法断点调试

原理:

vm是模型和视图的桥梁,当模块层数据改变时,vm会检测到变化并通知视图层做相应修改。

https://blog.csdn.net/weixin_51258044/article/details/121927735

最新文章

  1. java中类的继承
  2. 0518 Scrum 项目 5.0
  3. vim跳到文件头和文末结尾
  4. 点击空白处隐藏div
  5. 任务调度JOB
  6. iOS Crash文件的解析
  7. NorFlash
  8. Swift数据类型之整型和浮点型-备
  9. WPF属性与特性的映射(TypeConverter)
  10. ORACLE union order by
  11. 分享用于学习C++音频处理的代码示例
  12. LeetCode & Q14-Longest Common Prefix-Easy
  13. C# 创建EXCEL图表并保存为图片
  14. winform程序中chart图的使用经验(chart图的更新)
  15. 性能测试LR学习笔录2am pm -3
  16. 接之前的文章,VS2017中使用Spring.NET配置以及使用方法(framework4.6.1超详细)
  17. java.net.ServerSocket 解析
  18. Java之旅_高级教程_实例_文件操作
  19. HTML+CSS+JS 传智 详细笔记
  20. (Alpha)Let's-展示博客

热门文章

  1. day16-声明式事务-02
  2. 操作系统linux
  3. ReentrantLock介绍及源码解析
  4. drf-day2——restful规范、序列化反序列化、基于django编写五个原生接口、drf介绍和快速使用、cbv源码分析
  5. C#依赖注入(直白明了)讲解 一看就会系列
  6. FAQ os.system调用失效问题
  7. 破解练习-CRACKME002
  8. C++ 从数组中拿值,每个值不相同
  9. 安装KaLi操作系统并优化
  10. appium 在linux安装和使用(持续更新)