MVC 架构MVC 架构主要分为以下几个部分Model层主要负责网络请求数据库处理I/O的操作即页面的数据来源View层 对于xml布局文件和java代码动态view部分Controller层 主要负责业务逻辑在android中由Activity承担请求的流程View接受用户的交互请求。View将请求转交给Controller。Controller操作Model进行数据更新。数据更新之后Model通知View数据变化。View显示更新之后的数据。存在问题Activity 同时负责管理 View 层与 Cnntroller 层的工作会使Controller层变得臃肿View 与 Model 之间存在依赖关系相互耦合不利于开发和维护MVP 架构MVP的构成View层对应于Activity与XML,只负责显示UI,只与Presenter层交互与Model层没有耦合Presenter层 主要负责处理业务逻辑通过接口回调View层避免Activity的臃肿Model层主要负责网络请求数据库处理等操作这个没有什么变化流程View 接收用户交互请求View 将请求转交给 Presenter(V调用P接口)Presenter 操作Model进行数据更新(P调用M接口)Model 通知Presenter数据发生变化(M调用P接口)Presenter 更新View数据(P执行接口,V相应回调)相较于MVC在MVP中Activity的代码不臃肿解耦。Model层与View层完全分离修改V层不会影响M层降低了耦合性。Presenter层与View层的交互是通过接口来进行的便于单元测试。可以将一个Presenter用于多个视图而不需要改变Presenter的逻辑。仍然存在的缺点双向依赖View 和 Presenter 是双向依赖的一旦 View 层做出改变相应地 Presenter 也需要做出调整。在业务语境下View 层变化是大概率事件随着业务逻辑的增加一个页面可能会非常复杂这样就会造成View的接口会很庞大。MVVM 架构MVVM模式将Presenter改名为ViewModel基本上与MVP模式完全一致。唯一的区别是它采用双向数据绑定data-bindingView的变动自动反映在ViewModel反之亦然同时将代码划分为三个部分ViewActivity 和 Layout XML 文件与 MVP 中 View 的概念相同Model负责管理业务数据逻辑如网络请求、数据库处理与 MVP 中 Model 的概念相同ViewModel存储视图状态负责处理表现逻辑并将数据设置给可观察数据容器。流程View 接收用户交互请求View 将请求转交给ViewModelViewModel 操作Model数据更新Model 更新完数据通知ViewModel数据发生变化ViewModel 更新View数据MVI 架构MVI与MVVM很相似其借鉴了前端框架的思想更加强调数据的单向流动和唯一数据源。![[Pasted image 20260424011110.png]]分为三个部分Model: 与MVVM中的Model不同的是MVI的Model主要指UI状态State。例如页面加载状态、控件位置等都是一种UI状态View: 与其他MVX中的View一致可能是一个Activity或者任意UI承载单元。MVI中的View通过订阅Model的变化实现界面刷新Intent: 此Intent不是Activity的Intent用户的任何操作都被包装成Intent后发送给Model层进行数据请求MVI强调数据的单向流动主要分为以下几步用户操作以Intent的形式通知ModelModel基于Intent更新StateView接收到State变化刷新UI。![[Pasted image 20260424011212.png]]参考资料Android 架构模式如何选择Android架构模式飞速演进目前已经有MVC、MVP、MVVM、MVI。这篇文章就针 - 掘金MVVM 进阶版MVI 架构了解一下~MVVM架构被官方推荐成为Android开发中的主流架构。不过软件开发中没有银 - 掘金