MVC (Model-View-Controller) :
图我就不放了,反正都是那个几个,来谈谈对安卓来说。
在安卓中说activity等于同时是view也是model层。这让activity非常的长,在以前的安卓源码中,也有非常多的activity是很长的。但是现在都已经被精简了。所以其实个人感觉MVC对安卓来说也是没有分层。不过这样写好处是开发非常快,如果1个人开发非常利于加快开发速度和查找BUG。毕竟你写个helloworld还要怼1堆框架吗?不过缺点也很明显,在多人开发的时候,多人操作一个页面会让整体的效率变低,merge等等问题就很麻烦。不过如果你真的1个Activity上千行代码。我还是不推荐的。。。。毕竟看起来麻烦啊。。。。(目前开发的项目中有个3500行的历史悠久的activity每次看到要调哪里就脑壳疼,还不敢改重构)
MVP(Model-View-Presenter):
图依旧不放了。
从安卓火到现在,一直流行的框架。非常成熟也有google等官方demo可以当做参考。优点:把与UI无关的逻辑代码移动到Presenter里,定义个Contract写好View层和Presenter层的功能接口再分别实现。这样的话架构层次清晰,阅读和修改起来要容易得多。缺点:要写非常多的接口,bug不是很好定位,还有大部分的mvp过渡封装的非常厉害,在开发速度一般,要书写很多的类,1个activity 4 5 个类。如果对于单人开发来说这个实在是太繁重了,毕竟你写个helloworld需要这样吗。
MVVM(Model-View-ViewModel):
任性不放图。
安卓的MVVM出现的很晚,在前段,vue等等流行起mvvm安卓还没有mvvm,当时都是mvp,面试你不会个MVP什么的都不好意思,之后安卓mvvm出现,可以说生不逢时,大量的项目已经是mvp了,而且当时市场上都是mvp的帖子,mvvm平淡的出现,平淡的开始,之后互联网安卓热度下降等等因素导致到现在大家还是对于mvp情有独钟,也无可奈何,毕竟不管什么项目没架构我们照样开发!
讲讲mvvm和mvp的区别,最大的在于 presenter和viewmodel,presenter把大部分逻辑都处理了然后在返回给view,而viewmodel让view层可以响应式的展示数据,2种不一样的监听livedata和databinding让我们把很多数据可以放在viewmodel处理并且很简单的对xml操作。你也不需要定义一堆的接口,不过类还是不少。mvvm的出现在mvp分层的基础上,让代码更加简洁,还少了很多的UI回调。
其他的(不知道叫什么):
model层:
model数据的意思,这层究竟是做什么,用来获取数据让Viewmodel或者Presenter,Controller可以无视数据的来源究竟是哪里直接处理数据,这个数据可能是来自于DAO或者来自于网络,之前面试了很多回答都是实体类,具体问他们会回答就是实体类啊~让我很忧伤~~~
RXJAVA:
出现很久一个东西,具体就不说了晚点开另外一篇文章来讲述,讲讲在应用中的事情。
首先我不推荐rxjava,异步和复杂的设计让他很难定位BUG还会触发很多BUG,而且作为门槛来说rxjava太高了,高到我无法预知我同事的rxjava水平(自己的经历不多说脑壳疼。。。)。对于一个安卓开发来说rxjava在我看来只能说是课余使用的东西,并不是在实际应用中非常好的选择。所以我强烈不推荐RXJAVA。
写在最后
我是这么认为的,框架只是合适的没有很好的。各自有优缺点。应该选择适合你应用的框架。比如你是独立开发,我个人还是比较推荐MVC。如果你开始成团你可能就需要MVP和MVVM 。
网友评论