用场景:视图界面不是很多的项目中。
MVP(Model-View-Presenter)是MVC的演化版本,MVP的角色定义如下
- Model:主要提供数据的存取功能。Presenter需要通过Model层来存储、获取数据。
- View:负责处理用户事件和视图部分的展示。在Android中,它可能是Activity、Fragment类或者是某个View控件。
- Presenter:作为View和Model之间沟通的桥梁,它从Model层检索数据后返回给View层,使得View和Model之间没有耦合。
在MVP里,Presenter完全将Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过 定义好的接口进行交互 ,从而使得在变更View时可以保持Presenter的不变,这点符合面向接口编程的特点。View只应该有简单的setter/getter方法,以及用户输入和设置界面显示的内容,除此之外就不应该有更多的内容。绝不允许View直接访问Model,这就是其与MVC的很大不同之处。
MVP优点:
- Model与View完全分离,可以修改View而不影响Model
- 可以更高效的使用Model,因为Model与外界的交互都在Presenter内部
- 可以将一个Presenter用于多个View,而不需要改变Presenter的逻辑。这个特性很有用,因为View的变化总是比Model的变化频繁
- 把逻辑放在Presenter中,就可以脱离UI来测试这些逻辑(单元测试)
MVP缺点:
- Presenter作为桥梁协调View和Model,会导致Presenter变得很臃肿,维护比较困难
MVC -> MVP 的最大差異在於 Activity的商業邏輯移到Presenter,Activity 專心於View
Reference:
No comments:
Post a Comment