关于 mutable LiveData,你是否还在手写样板代码

7,123 阅读2分钟

背景

响应式编程便于单元测试,但其自身存在漏洞,MVI 即是来消除漏洞,

MVI 有一定门槛,实现较繁琐,且存在性能等问题,难免同事撂挑子不干,一夜回到解放前,

综合来说,MVI 适合与 Jetpack Compose 搭配实现 “现代化的开发模式”,

反之如追求 “低成本、复用、稳定”,可通过遵循 “单一职责原则” 从源头把问题消除。

MVI-Dispatcher 应运而生。

收藏或置顶顺滑转场删除笔记

项目简介

笔者长期专注 “业务架构” 模式,致力消除敏捷开发过程中 “不可预期问题”。

在本案例中,我将为您展示,MVI-Dispatcher 是如何将原本 "繁杂易出错" 消息分发流程,通过 寥寥几行代码 轻而易举完成。

implementation 'com.kunminx.arch:mvi-dispatch:7.5.0'

一个完备的 “领域层” 消息分发组件,至少应满足以下几点:

1.内含消息队列,可暂存 “发送过且未消费” 的消息,

2.页面不可见时,队列暂存期间发来的消息,页面重新可见时,自动消费未消费的消息。

MVI-Dispatcher 应运而生,

此外,MVI-Dispatcher 改进和优化还包括:

1.可彻底消除 mutable 样板代码,一行不必写

2.可杜绝团队新手滥用 mutable.setValue( ) 于 Activity/Fragment

3.开发者只需关注 input、output 二处,从唯一入口 input 注入 Event,并于唯一出口 output 观察

4.团队新手在不熟 LiveData、UnPeekLiveData、SharedFlow、mutable、MVI 情况下,仅根据 MVI-Dispatcher 简明易懂 input-output 设计亦可自动实现 “响应式” 开发

5.可无缝整合至 Jetpack MVVM 等模式项目

MVI-Dispatcher 以 “备忘录场景” 为例,提供完成一款 “记事本软件” 最少必要源码实现,

故通过该示例,您还可获得内容包括:

1.整洁代码风格 & 标准命名规范

2.对 “响应式编程” 知识点深入理解 & 正确使用

3.AndroidX 和 Material Design 全面使用

4.ConstraintLayout 约束布局使用

5.十六进制复合状态管理最佳实践

6.优秀用户体验 & 交互设计

The one more thing is:

详见 GitHub 仓库 KunMinX/MVI-Dispatcher