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
MVC 与 MVP 并无两样的更多相关文章
- [转]MVC、MVP、MVVM
界面之下:还原真实的 MVC.MVP.MVVM 模式 [日期:2015-10-28] 来源:github.com/livoras 作者:戴嘉华 [字体:大 中 小] 前言 做客户端开发.前端开发 ...
- MVC,MVP 和 MVVM 模式如何选择?
转摘:http://www.linuxidc.com/Linux/2015-10/124622.htm 前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决 ...
- MVC、MVP、MVVM 模式
一.前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV* ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...
- 转:界面之下:还原真实的 MVC、MVP、MVVM 模式
前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式 ...
- 深入理解MVC与MVP
http://www.cnblogs.com/seaky/archive/2011/04/06/1982533.html 在深入分析MVC和MVP之前,我们有必要回顾下经典的三层架构.分层是计算机学科 ...
- js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-V ...
- 架构 : 三层架构、MVC、MVP、MVVM
1. 三层架构 将整个业务应用划分为:界面层(User Interface layer, UIL).业务逻辑层(Business Logic Layer, BLL).数据访问层(Data acce ...
随机推荐
- ESP8266-利用网页控制ESP8266
说明:发出/gpio/1 就输出 "亮灯": /gpio/0 就输出 "灭灯" #include <ESP8266WiFi.h> con ...
- 对Moment.js的研究
创建npm install moment --save-dev 日期格式化 moment().format('MMMM Do YYYY, h:mm:ss a'); // 六月 4日 2019, 6:2 ...
- 进阶:python3实现 插入排序
一图胜千言,插入排序的核心逻辑如下: 将数据分成两半,前一半是已排好序的,后一半是待排序的 每次取后一半中的第一个数,在已排序的一半中,逆序依次比较,找到要插入的位置 记录插入的位置,在最后判断是否需 ...
- Codeforces 878A - Short Program(位运算)
原题链接:http://codeforces.com/problemset/problem/878/A 题意:给出n个位运算操作, 化简这些操作, 使化简后的操作次数不多于5步. 思路:我们可以对二进 ...
- Go实现分布式外部排序
Go实现分布式外部排序 项目路径: https://github.com/Draymonders/go_external_sort 默认读入文件: small.in 默认输出文件:small.out ...
- 【Java】SpringBoot整合RabbitMQ
介绍 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,AMQP,即A ...
- 一本通例题埃及分数—题解&&深搜的剪枝技巧总结
一.简述: 众所周知,深搜(深度优先搜索)的时间复杂度在不加任何优化的情况下是非常慢的,一般都是指数级别的时间复杂度,在题目严格的时间限制下难以通过.所以大多数搜索算法都需要优化.形象地看,搜索的优化 ...
- 【l转】VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func
https://blog.csdn.net/hebbely/article/details/53780562
- Gym 100507H - Pair: normal and paranormal
题目链接:http://codeforces.com/gym/100507/attachments -------------------------------------------------- ...
- 数位dp好题整理+自己wa过的细节记录
花(fa)神的数论题 三倍经验:烦人的数学作业 windy数 手机号码 同类分布(博客先鸽着) 板子固然好,细节无限多. 花式wa题法,警示后来人. 1.手残害人不浅 (蒟蒻的我掉坑里不止一次) 2. ...