前言
MVP 是从经典的模式MVC演变而来。Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
下面我们从:区别、解决了什么关键问题、缺点来再论MVP。
MVC和MVP的区别?
在MVP中View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
简单一句话来说:MVP把View跟Model隔离了。
MVP解决了MVC哪些问题?
1.隔离了View和Model,彼此访问都通过接口,强化了面向接口编程。
2.由于M、V、P三层都隔离了,彼此改变都相对独立,无需“牵一发,动全身”,并且P层可以独立重用。
3.单元测试优势:P层可以模拟处理逻辑。
4.更有利于“先定义(接口),再实现”(先想好,再动手)的做事方式。
5.低耦合的方式,更有利于插件化的开发(固件升级概念)。
6.(欢迎补充,哈哈)。
MVP缺点
1.写法繁琐,每个模块下的MVP每一层都要开放接口
2.致命缺陷,Activity的生命周期会让MVP的接口调用出现泄漏问题
小结
关于缺点的建议:1.写一个MVP分层生成插件 2.利用项目基类Activity的生命周期进行Presenter的添加与释放(不优化此问题你就等着crash吧)