框架模式之 MVP
2019-06-18 本文已影响0人
Kevin_小飞象
简介
MVP 模式是 MVC 模式的一个演化版本,MVP 全称 Model-View-Presenter。目前 MVP 在 Android 应用开发中越来越重要了。
设计图

优点
- 模型与视图完全分离;
- 可以更高效地使用模型,因为所有的交互都发生在一个地方—— Presenter 内部;
- 一个 Presener 可以用于多个视图(View),而不需要改变 Presenter 的逻辑。视图(View)的变化比模型(Model)的变化更频繁的多 ,所以这样超级方便;
- View 可以进行组件化。在 MVP 当中,View 不依赖 Model。这样就可以让 View 从特定的业务场景中脱离出来,可以说 View 可以做到对业务逻辑完全无知。它只需要提供一系列接口提供给上层操作。这样就可以做高度可复用的 View 组件。
- 更容易单元测试
缺点
- 由于对视图的渲染放在了 Presenter 中,所以视图 View 和 Presenter 的交互会过于频繁。特别是需要修改视图的时候,Presenter也需要跟着修改,很麻烦。
- Presenter 中除了业务逻辑以外,还有大量的 View->Model,Model->View的手动同步逻辑,造成 Presenter 比较笨重,维护起来会比较困难。
- 其实总的来说就是结构很清晰,业务逻辑也很明白,耦合低,但是就是自己写的麻烦,Presenter 不好维护,工作量太大,太笨重,有点像 MVC 中的 Activity 了,职责太多了。
实例
小结
通过引入接口 BaseView,让相应的视图组件如 Activity,Fragment 去实现BaseView,实现了视图层的独立,通过中间层 Preseter 实现了 Model 和 View 的完全解耦。MVP 彻底解决了 MVC 中 View 和 Controller 傻傻分不清楚的问题,但是随着业务逻辑的增加,一个页面可能会非常复杂,UI 的改变是非常多,会有非常多的 case,这样就会造成 View 的接口会很庞大。