Monday, September 14, 2020

Android MVP

用场景:视图界面不是很多的项目中。

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

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能