MVP
基于MVC的改良
1. 组件概述
Model(模型):
负责应用程序的数据和业务逻辑。
管理数据的获取、存储和处理,通常与数据库或外部API进行交互。
由Presenter调用来获取或更新数据。
View(视图):
负责显示用户界面和呈现数据。
处理用户输入,并将其传递给Presenter进行处理。
仅包含UI元素和展示逻辑,不包含任何业务逻辑。
Presenter(呈现器):
作为Model和View之间的中介,负责处理用户输入、更新Model和控制View的显示。
接收来自View的输入,调用Model获取或更新数据,然后更新View以反映这些变化。
执行所有的业务逻辑,通常不直接与UI元素交互。
2. 数据流
MVP模式的典型数据流如下:
用户与View交互(例如,点击按钮、输入数据)。
View将用户输入传递给Presenter。
Presenter处理用户输入,可能会调用Model来获取或更新数据。
Model更新其状态并通知Presenter。
Presenter根据Model的变化更新View。
View重新渲染以显示更新后的数据。
3. 特点
关注点分离:MVP通过将应用程序的业务逻辑、数据和用户界面分离,提高了代码的可读性和可维护性。
可测试性:Presenter可以独立于View进行单元测试,因为它不依赖于具体的UI实现。
灵活性:View可以很容易地更换,Presenter可以在不同的View之间复用,允许开发者在不影响业务逻辑的情况下更改用户界面。
4. 适用场景
桌面应用程序:MVP常用于需要频繁更新UI的桌面应用程序,如Java Swing、Windows Forms等。
移动应用程序:MVP也广泛应用于Android应用程序开发,因为它可以帮助组织代码并提高可测试性。
View它持有Presenter作为变量(和MVC的差别)。
View持有Presenter,所以Presenter中的View应该声明为weak或unowned,避免循环。
优点:解耦View和Controller之间的耦合,将View和Presenter区分得更加清楚。将业务划分更加精细 缺点:View所有的交互都传给Presenter处理,一旦项目功能增加了,View的代码和Presenter的代码将会增加。 相比MVC在C一个文件里面就解决,MVP总代码量会增加。App维护成本和文件会增大。
Last updated