对于MVP模式的一点理解
1.
先来聊一聊我对MVC
模式的理解
Model:
类似于Javabean
以及对数据的操作
View:
就是layout.xml
布局的文件
Controller:Activity
文件
我们一般的操作就是在Activity
文件里面操作Model
层的数据,然后再更新View
的视图界面。这样主要的操作就全部集中在Activity
里面,软件功能简单还好说,但是一旦功能多了起来,Activity
里面的代码就会很长,看的让人头疼。我曾经在一个项目中看别人的代码,这是一个封装的Android
自带的播放器,因为牵扯到的功能很多,导致那个Activity
代码异常的长。看的我头都快要爆炸了,当然效果也不是很好。
因此我开始学习MVP
模式,MVP
模式的学习刚开始学习起来,感觉很奇怪,不知道为什么要那样写?只是知道写了好多的接口。
有人说Activity
它直接操作View
的显示而且也起到Controller
的作用,所以它其实是View
层和Controller
层的混合。我感觉这样说也有道理。
MVP相对于MVC的优点
- Activity的职责更为明确
- 代码结构更清晰,更容易维护
- 方便单元测试
- 根除MVC中内存泄漏的问题
MVP核心思想:
MVP
把Activity
中UI
逻辑抽象成View
接口- 把业务逻辑抽象成
Presenter
接口Model
还是原来的Model
MVP
是MVC
的升级版,首先Model
层并没有变化,其中View
层就变成了Activity
文件,Presenter
就变成了实际的控制器,执行具体的逻辑操作。
上面的图我们也可以看出View
和Model
层并没有什么联系,它们是通过Presenter
层作为桥梁来进行交互的。
一般的写法就是把关于界面操作的方法提取出来作为借口,View层(Activity)
来实现这个接口,Presenter
层也是提取出接口然后具体的类来实现。同时在Presenter
层里面同时实例化View
层和Model
层的对象,然后这样就实现了桥梁的功能。