MVC:对android来说 activity几乎承担了view层和controller层两种角色,并且和model层耦合严重,业务逻辑和ui逻辑耦合严重,维护起来很麻烦,
MVP:MVC演变而来,MVP模式下的activity只承担了view层的角色,controller的角色完全由presenter负责,view层和presenter层的通信通过接口实现,所以View和Presenter之间不存在耦合问题,view层与model也是完全解耦了。相对于MVC来说,MVP后期更易于维护。中大型项目,最好配合模块化,将粒度分的更细更清晰,业务之间职责明确。但mvp容易造成接口管理的困难,类的爆炸,代码量的增加。
MVVM:Model:同上。View:同上。ViewModel:视图模型,通过框架实现View层和Model层的双向绑定。优点:a.View和Model双向绑定,一方的改变都会影响另一方,开发者不用再去手动修改UI的数据。b.不需要findViewById也不需要butterknife,不需要拿到具体的View去设置数据绑定监听器等等,Android目前的双向绑定是由databinding实现的。c.View和Model的双向绑定是支持生命周期检测的,不会担心页面销毁了还有回调发生,这个由lifeCycle完成。d.不会像MVC一样导致Activity中代码量巨大,也不会像MVP一样出现大量的View和Presenter接口,项目结构更加低耦合。缺点:由于数据和视图的双向绑定,导致出现问题时不好定位来源,有可能数据问题导致,也有可能业务逻辑中对视图属性的修改导致。
网友评论