浅谈Android开放中的架构模式MVC和MVP的区别

it2023-08-01  73

浅谈Android开放中的架构模式MVC和MVP的区别

MVC架构模式

1.Model:模型层,负责处理数据的加载或者存储 2.View:视图层,负责界面数据的展示,与用户进行交互 3.Controller:控制器层,负责逻辑业务的处理

在 MVC 架构中,View 产生事件,通知到 Controller,Controller 中进行一系列逻辑处理,之后通知给 Model 去更新数据,Model 更新数据后,再将数据结构通知给 View 去更新界面。这就是一个完整 MVC 的数据流向。其实在 Android 开发中,其本身默认可以理解为 MVC 结构,把 View 放在 xml 中与 Java 代码解耦,然后 Activity / Fragment 充当 Controller 进行逻辑控制,但是 Android 本身并没有对 Model 进行划分,所以往往我们会让 Activity / Fragment 充当 Model 和 Controller 两个角色。而且往往 xml 中的 View 操作也是在 Activity / Fragment 中,导致有时候 Activity / Fragment 也会充当一些 View 的角色。


MVP架构模式

1.Model 模型,负责数据的加载和存储。 2.View 视图,负责界面的展示。 3.Presenter 控制器,负责逻辑控制。


采用MVP模式的优势是:

把业务逻辑抽离到Presenter层中,View层专注于UI的处理。 分离视图逻辑与业务逻辑,达到解耦的目的。 提高代码的阅读性。 Presenter被抽象成接口,可以根据Presenter的实现方式进行单元测试。 可拓展性强。 采用MVP模式的缺点:

项目结构会对后期的开发和维护有一定的影响。具体视APP的体量而定。 代码量会增多,如何避免编写过多功能相似的重复代码是使用MVP开发的一个重点要处理的问题。 有一定的学习成本。

二者的区别

MVP 和 MVC 最大的不同,就是 View 和 Model 不相互持有,都通过 Presenter 做中转。View 产生事件,通知给 Presenter,Presenter 中进行逻辑处理后,通知 Model 更新数据,Model 更新数据后,通知数据结构给 Presenter,Presenter 再通知 View 更新界面。 MVC的耦合性较高,View可以直接访问Model,导致三者之间构成了回路。所以两者的主要区别是,MVP中View不能直接访问Model,需要通过Presenter发出请求,View与Model不能直接通信

最新回复(0)