专业的编程技术博客社区

网站首页 > 博客文章 正文

mvc 和mvp热点面试问题解疑(mvp mvc mvvm面试)

baijin 2024-10-12 02:17:58 博客文章 23 ℃ 0 评论

今天有一个朋友出去面试android开发,被问到了mvc和mvp中的相关问题。随着技术的发展,越来越多的公司还是普及mvp开发模式,要想能hold住公司的项目,必须对mvp有一个全面的了解,而面试这关出现了mvp的考题也不难理解了。

下面就对mvc和mvp做一个介绍,本文旨在帮助更多的同学更好的理解mvc和mvp思想,请各位大牛手下留情~~~~

我们先来说下mvc,先看张图

mvc

MVC:

model 模型,用来存放一些javabean和封装的业务逻辑等

view 视图,那么mvc中布局文件和activity、fragment等都有一些v的内容,只有布局才是纯粹的视图

controler 控制者(管理者)用来操作model并且更新view视图的,activity 和fragment也当做了controler

------------------------------------------------------------------------------------------------------------------------------------------------------------------

根据mvc的设计,activity 或者fragment他们处理的事务比较多,既处理视图的逻辑,还处理其他的逻辑。

比如:加载数据,定位,支付等等,这样的话会导致activity 或者fragment代码量略多。

有经验的开发者会通过代码抽取减少activity和Fragment的代码量,但是即使这样抽取了,activity 或者fragment的业务逻辑还是比较多的,所以说有可能会报出一个这样的错:mainthread has do too many things,类似这样的错误,同时存在一个隐患,由于activity 或者fragment的业务很复杂,势必会让声明或者定义的变量和方法过多,从而造成OOM,如果还多次使用静态修饰,还有可能会造成内存泄漏。

所以说mvc在设计的时候初衷是好的,但是真正让android程序员实现的时候就变了意思,不过这里提一下,java后端目前还是使用的ssh 框架,设计思想是mvc。

MVP

好,接下来我们看一下mvp,还是先看一张图

mvp

从这个图不难看出,mvp相对mvc的优化是:避免了view和model之间的相互访问调用。

完美的解决了mvc设计时的初衷,就是说隔离model view

model: 模型 用来存放一些javabean和封装的业务逻辑等

view : 视图 布局 ,除此之外,我们需要定义view接口来动态改变布局 ,view接口的实现类是activity、fragment,所以说这个时候activity 和fragment专门成了view

presenter: 呈现者 是model view之间的沟通者,用来操作model更新view,我们在编程时需要单独定义Presenter接口及Presenter的实现类,让presenter去处理业务逻辑,从而为activity减压。

ok,以上就是mvc和mvp的一些区别,各位小伙伴有没有一点思路了呢?如果还是不理解可以留言,我会再进行解答。

题外:目前我的一些同事中已经开始使用mvvm进行编程了,这个编程一般是通过Data Binding框架来实现的,这个在以后的文章中再给大家介绍。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表