初步理解MVC与MVP

来源:互联网 发布:herry it 编辑:程序博客网 时间:2024/06/05 06:09

今天偶然看到一篇博客:http://zjutkz.net 中的《教你认清MVC,MVP和MVVM》。


说实话:MVC还是模模糊糊,MVP只是听说过,MVVM是第一次听说。好吧,为了不那么落伍,就详细看了看。因为各种原因,目前只看到了MVP


首先理解MVC

Model--View--controller

 

Model:就是数据bean

View:就是布局文件中的view,也就是各种ViewViewGroup

controller:就是控制器,就是Activity

 

控制器控制数据在view上的展示

 

这种情况下Viewcontroller是相互关联的:因为我们一般在activity中操作数据和view

 

(其实真实的mvc应该是控制器操作数据,view只管view,不管操作数据的)



MVP

MVP模式就是将viewcontroller解耦。

MVP核心思想:将UI部分抽象为View接口,将controller部分抽象成presenter接口,Model还是原来的model

 

这样,Activity不操作数据。只负责处理生命周期相关View

(后台引用数据的时候,不会因为数据在Activity中操作而占用Activity不能被回收)

 

也就是说从传统的Activity中可以抽离出两个接口:View接口和Presenter接口

那么有接口就要有实现:

View接口的实现就是Activity或者Fragment

Presenter的实现就是自定义的一个子类

 

View接口要定义对view的操作。如显示,隐藏,赋值等

Presenter接口主要定义对数据的操作。然后通过调用View的方法将数据与view关联

那么presenter的实现类里面还是要有View接口的对象的

 

数据就在Presenter里面获取,数据的操作就在Presenter里面做。数据与View的关联通过调用View接口对象的方法做。既然要通过调用View接口的方法,也就是说要对View要进行的操作都还是要在View接口中定义的。

 

尝试一下下来的总结是:

View接口定义对View的操作,要在子类(Activity或者Fragment)中实现操作

Presenter接口定义对数据和View的操作,在子类中实现

View中调用presenter对象的方法,而Presenter对象中的实现都是通过获取的View对象调用的View中的方法。到这里一目了然:就是各种回调

 

 

重点其实是在Presenter中操作数据,然后通过调用View对象的方法将数据与View关联


参考的博客:

http://blog.csdn.net/lmj623565791/article/details/46596109

https://segmentfault.com/a/1190000003927200

http://zjutkz.net


           说实话,用惯了mvc,感觉这种mvp的实现很蛋疼,有点绕。或许还是没理解对。如果有大神给指点一下就好了。
0 0
原创粉丝点击