Flutter框架设计,我真的再也不用MVC、MVP了

这篇博客探讨了在Android开发中,MVC和MVP架构的局限性,以及随着业务复杂度增加带来的代码解耦问题。作者提出了一种新的架构设计,包括Widget、ExtensionWidgetUI、ExtensionWidgetController、ViewModel和LoadData,旨在解决视图传递和业务解耦的挑战。这种架构减少了参数传递,实现了页面级模块化,并能与状态管理框架如Provider无缝集成。文章通过代码示例展示了新架构的工作原理,并邀请读者尝试这种新方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVC、MVP、MVVM架构设计的方式,在Android中广泛被使用。从本质上我认为,MVC和MVP其实将View层的代码解耦到Controller/Presenter中。随着业务的复杂,C/P中代码积累的多了,然后又开始解耦一些Model或Interactor或其他。随着业务再度复杂,每一个层的业务都很多代码了, 然后各种分层设计就出来了等等…

那回归到最简单的MVC、MVP模式来,我们可以发现这2个设计模式都产生了一个问题。

Controller和Presenter都需要持有View。View被各种传递。

能不能有一种方式能够同时解决解耦和值传递的问题?

由此我在实际项目中尝试 一种新的架构方式如下:
在这里插入图片描述

Widget:显示UI的页面级Widget,StatelessWidget或StatefulWidget。

ExtensionWidgetUI:Widget的扩展。这种专门存放了各种返回Widget的函数。

ExtensionWidgetController:业务的Controller,它也是一份Widget的扩展。但可以理解为处理业务的Controller。

ViewModel:这里我结合了Provider来使用。专门配合Controller使用,提供UI数据的支持。每一个ViewModel都mixin了一个LoadData。

LoadData:大部分情况下,页面都需要加载中、加载完成、加载失败等状态。所以这里维持了一份页面数据的加载状态,以提供给Controller、Widget访问。

如文件相关页面的代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值