MVC 与 MVP 并无两样
关于 MVC 的定义介绍,摘一段百度百科介绍:
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
- Model(模型)表示应用程序核心(比如数据库记录列表)。
- View(视图)显示数据(数据库记录)。
- Controller(控制器)处理输入(写入数据库记录)。
简单也可以这样理解,View 单纯负责 UI,如果要更新 UI 数据,则去调用 Controller,让 Controller 去控制 UI ,Controller 不生产数据,数据层都在 Model 中,而 Controller 持有 Model 层引用,所以它会调用 Model 层然后接受到数据,接着分发给 UI,整个流程就类似于这样。
实际上,这就是一种简单的分层机制,不同的层次做不同的事,让代码结构更清楚,各层职责也清楚,不用把所有逻辑写一块,导致代码臃肿,而且复用性也差。
在 16、17 年左右,Android 领域大家突然开始讨论 MVP,也有很多人讨论两者的区别,实际上,个人觉得 MVC 跟 MVP 几乎没啥差别,同样的思想只是换了一个名字而已,Controller VS Presenter,都是控制器的角色。
MVP 为什么在 Android 中被大家所讨论,最主要的原因还是由于 Activity 机制。每一个 Android 开发大都是从写 Activity 开始,一个界面对应一个 Activity,所以一开始业务简单的时候,大家会很容易的把所有的操作逻辑都写在 activity 里,这很正常,因为 Activity 就是这么一个机制,Google 就是这样设计的。
后来软件规模越来越大,Activity 中的代码越来越多,代码越来越难以维护,原来在 Activity 中堆代码的机制就受到了考验。实际上,如果正确利用 MVC 模式完全可以解决 Activity 臃肿问题,只不过后来同样用了分层模型去解决问题,但是给这个模型起了另外一个名字 — MVP。
实际上,MVC、MVP 不重要,重要的是去理解正确的软件开发理念。分而治之,各司其职永远都是软件开发的真谛。
链接
2019-04-19:请谈谈你对 MVC 和 MVP 的理解? · Issue #33 · Moosphan/Android-Daily-Interview
最新文章
- 关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理
- 错误:媒体集有 2 个媒体簇,但只提供了 1 个 sql2005 备份错误。
- Qt持久性对象进行序列化
- Non-constant Fields in Case Labels
- sql模糊查询
- 2013 Multi-University Training Contest 1 Cards
- 微信多媒体上传图片,创建卡券上传 LOGO
- python乱码处理
- 查看Linux某个进程打开的文件句柄(file descriptor)数量
- 设计模式(十):Decorator装饰者模式 -- 结构型模式
- poj 1860 (Bellman_Ford判断正环)
- Android - 位置定位(Location)服务(Service)类的基本操作
- Codeforces Round #265 (Div. 2) C. No to Palindromes! 构建无回文串子
- 201521123051《java程序设计》 第五周学习总结
- Day-1:初识开发板与基础知识
- 企业级应用TOMCAT
- Heap
- 关于redis分布式锁实现原理
- JS基础——原型和原型链
- 了解计算机与操作系统发展阶段--Windows
热门文章
- osi7层模型及线程和进程
- java:Conllection(List,set,get,map,subList)使用
- 多对多关系表的创建方式、forms组件
- Linux kswapd0 进程CPU占用过高
- js去重的es6做法和es5做法
- for-in语句和with语句、break和continue语句
- HDU 4348 SPOJ 11470 To the moon
- DesignWare I2C模块的验证
- 使用GOGS搭建自己的Git托管
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_2_编码引出的问题_FileReader读取GBK格式文件