mvc和mvp的区别

MVC和MVP区别


目前来说主流的开发模式都是mvp,但是还有程序员还有公司在坚持MVC,百度等一些大公司或者一些极客在用mvvm

MVC:

mvc

model 模型,用来存放一些javabean和封装的业务逻辑等
view 视图,那么mvc中布局文件和activity、fragment等都有一些v的内容,只有布局才是纯粹的视图
controler 控制者(管理者)

用来操作model并且更新view视图的,activity 和fragment也当做了controler,所以说activity 或者fragment他们处理的事务比较多,既处理视图的逻辑,还处理其他的逻辑比如:加载数据,定位,支付等等,这样的话会导致activity 或者fragment代码量略多。有经验的开发者会通过代码抽取减少activity和Fragment的代码量,但是即使这样抽取了,activity 或者fragment的业务逻辑还是比较多的,所以说有可能会报出一个这样的错:you have do much things on mainthread,类似这样的错误,同时存在一个隐患,由于activity 或者fragment的业务很复杂,势必会让声明或者定义的变量和方法过多,从而造成OOM,如果还多次使用静态修饰,还有可能会造成内存泄漏。

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

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

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

presenter: 呈现者 是model view之间的沟通者,用来操作model更新view

MVVM:

model
view
modelview/viewmodel 有databinding框架支持你去做

mvvm是google开发者推荐使用的一个开发模式,他们专门在android系统中定义了databinding框架,来实现view 和model之间的交互,所以说初学者会觉得有点蒙,因为它里面少点代码,这个以后再讲。