不必纠结MVC还是MVP了,听我说两句~

MVC全称是Model-View-Controller 也就是模型–视图–控制器。是在1970年的时候提出由TrygveReenskaug在Smalltalk-80系统上首次提出的。MVP是MVC的一个演化版本,全称是Model-View-Presenter。MVP的出现主要就是解决MVC中的View和Model的耦合性高的的问题,同时又带来了很好的扩展性。

学习Android的同学注意了!!!

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Android学习交流群,群号码:364595326  我们一起学Android!

MVC全称是Model-View-Controller 也就是模型–视图–控制器。是在1970年的时候提出由TrygveReenskaug在Smalltalk-80系统上首次提出的。

SmallTalk在百度百科的解释是这样:

Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境 (IDE)。

来张图说明一下MVC的工作模式吧

图中红色小框框就是MVC的工作模式

从图中可以看出用户向View发送指令,再有View直接要求Modle改变状态

用户也可以直接向Controller发送指令,再由Controller发送给Model,在通过Model去改变View的状态

所以MVC框架模式View和Model之间的联系还是相当紧密的,耦合度还是很高,后期维护改动View需要将Model中的内容也要改动。

MVC是一种框架模式而非设计模式

其优点是:

理解起来比较容易,技术含量并不高,对开发和维护来说易于维护和修改

耦合度不高,表现层与业务层分离,各司其职。

其缺点是:

它定义不是很明确,完全理解MVC模式并不容易。

使用MVC需要精心策划,因为你它的内部原理比较复杂

一些小的项目采用MVC框架反而会更加复杂

MVC的Android伪代码实现

以下图片中代码与数据不匹配,只是为了方便理解MVC在代码中如何写,需要看实例的可以去网上了解,我在这里就偷懒了:)

首先你需要一个View视图,也就是XML布局。

然后你还需要一个Model

也就是数据,可以是数据库中的内容,也可以是在代码中写的List集合。

最后需要一个Controller,也就是Activity或者Fragment

通过在Controller中对用户在View中传递过来的操作,进行访问model中的数据,然后改变View中的状态。

MVP是MVC的一个演化版本,全称是Model-View-Presenter。

MVP的出现主要就是解决MVC中的View和Model的耦合性高的的问题,同时又带来了很好的扩展性。

MVP模式的三个角色的作用:

Presenter-中介

主演沟通View和Model的桥梁,他从Model获取数据后返回给View层,是的View层和Model层之间没有耦合,从而奖业务逻辑从View层抽离。

Model-房主

Model主要提供数据的存取功能,Presenter需要通过Model层存储、获取数据,Model层就像是一个仓库。

View-用户

View通常是指Activity、Fragment或者某个View控件。它含有一个Presenter成员变量,同时它需要实现一个逻辑接口,奖View上的操作转交割Presenter进行实现,最后Presenter调用View逻辑接口将结果返回给View元素。

来张图说明一下MVP的工作模式吧

从图中我们可以看出MVP和MVC之间的额最大区别:

VIew和Model之间彻底的解耦

MVP是面向接口编程,也就是说用户不必知道我是具体如何实现额,用户只要知道有这个功能,直接调用即可。

MVP的Android伪代码实现

以下图片中代码与数据不匹配,只是为了方便理解MVC在代码中如何写,需要看实例的可以去网上了解,我在这里就偷懒了:)

首先需要一个Presenter,作为View和Model的中间人

然后你还需要一个View以及ViewImpl接口

最后你还需要Model一个ModelImpl接口

为什么说不必纠结是MVC还是MVP呢?

MVC和MVP的最终目的就是要数据和UI分离,互相不影响。那么如何能不必纠结而做到呢??你听说过面向对象吗?听过再听听我的理解~

面向对象

封装、多态,继承。老师好像也都是这么教的,那么到底说明是多态封装继承呢?

封装

封装就是将用户不想看到的东西封装起来,可以用到面向对象中的 Private

属性,将用户不想看到的内容写在这里面。比如收音机上的播放功能,用户不用知道收益及如何播放,它只需要知道摁下这个键能播放即可。

多态

多态就是一个对象的多种表现形态,主要表现为:行为多态和状态多态。

行为多态就好比一个父亲有多个孩子,每个孩子都不一样,但是都是同一个父亲;状态多态就好比每个孩子在一天中有好多个状态变现,有吃饭,学习,睡觉。

继承?不!我想说的是对象!

我的一个朋友告诉我继承其实是对面向对象的最大误解。继承我们可以理解成一个对象他有多个小对象组成;比如人这个对象是由手脚,脑袋…等其它小对象组成。因此继承我们可以不去记住,我们只要对每个对象有深刻的认识即可把对象描述清楚!

那么MVC、MVP与面向对象有什么关系呢??

首先MVC和MVP都是要求数据和UI之间互不影响,那么面向对象不就是吗!?

面向对象View?

对象也就是我们说的用户也就是MC或者MVP中View,用户需要什么我们就展示给其什么,不需要的我们将其封装起来提供一个方法给你调用即可,这是不是和MVC或者MVP中很像!

面向对象Model?

同时面向对象也是需要将对象的行为细分,比如人可以跑,可以游泳…这是不是和MVC中的Model一样,需要处理用户不同的操作。

面向对象Controller?

最后面向对象也是需要一个状态去控制的,比如人的大脑。通过大脑去协调手和脚的平衡。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容