• Stars
    star
    153
  • Rank 242,762 (Top 5 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 2 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

简明易用框架,解决 MVI 实战痛点

 

🌏 English README

研发故事:《解决 MVI 架构实战痛点》

 

背景

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

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

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

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

MVI-Dispatcher 应运而生。

 

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

 

项目简介

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

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

implementation 'com.kunminx.arch:mvi-dispatch-ktx:7.4.0'

 

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

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

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

MVI-Dispatcher 应运而生,

 

 

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

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

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

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

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

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

 

What‘s More

本项目由 100% Java MVI-Dispatcher 项目改造而来,

如您正在学习 Kotlin,通过横向对比 MVI-Dispatcher 项目,可快速了解 Android Studio 一键转换后,为因地制宜遵循 Kotlin 特性/风格/思维,我们还可手动完成哪些调整修缮。

区别于避重就轻实验性示例,MVI-Dispatcher 及 MVI-Dispatcher-KTX 提供完成一款记事本软件最少必要源码实现。

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

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

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

3.AndroidX 和 Material Design 全面使用

4.ConstraintLayout 约束布局使用

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

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

 

Thanks to

感谢小伙伴苏旗、YJH 的测试反馈

AndroidX

Jetpack

SwipeDelMenuLayout

项目中图标素材来自 iconfinder 提供 免费授权图片

 

Copyright

本项目场景案例及 MVI-Dispatcher-KTX 框架,均属本人独立原创设计,本人对此享有最终解释权。

任何个人或组织,未经与作者本人当面沟通许可,不得将本项目代码设计及本人对 “唯一可信源” 及 MVI 独家理解用于 "打包贩卖、出书、卖课" 等商业用途。

如需引用借鉴 “本项目框架设计背景及思路” 写作发行,请注明链接出处

 

License

Copyright 2019-present KunMinX

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

Jetpack-MVVM-Best-Practice

难得一见 Jetpack MVVM 最佳实践!在 "以简驭繁" 代码中,对 "视图控制器" 乃至 "标准化开发模式" 形成正确、深入理解!
Java
8,626
star
2

Linkage-RecyclerView

即使不用饿了么订餐,也请务必收藏好该库!🔥 一行代码即可接入,二级联动订餐列表。
Java
3,618
star
3

UnPeek-LiveData

LiveData 数据倒灌:别问,问就是不可预期 - Perfect alternative to SingleLiveEvent, supporting multiple observers.
Java
1,123
star
4

Jetpack-MVVM-Scaffold

人生苦短,让脚手架为你节省时间。(目前作为《最佳实践》项目的 Dev 版优先更新)
Java
985
star
5

RxJava3-Operators-Magician

你用不惯 RxJava,只因缺了这把钥匙 🔑
Java
921
star
6

Jetpack-MusicPlayer

Json 数据驱动,音乐播放组件
Java
821
star
7

VIABUS-Architecture

让 Android 开发可以像流水线一样高效的 “职责分离架构” ⚡ 不同于 MVP 的配置解耦,也非 MVVM-Clean,VIABUS 是世界范围内首个明确提出 “通过职责分离” 真正实现 UI 和业务并行开发的 Android 业务架构和设计模式理念。
Java
485
star
8

MVI-Dispatcher

简明易用框架,解决 MVI 实战痛点
Java
282
star
9

Relearn-Android

重学安卓:你是想在含糊、冗长的网文中痛苦地打滚,还是跟随我的文字呼吸新鲜的空气?🔥
Java
265
star
10

Smooth-Navigation

提供流畅的 Jetpack Navigation 转场体验。并解决 GitHub 上 Navigation Add Hide 修改版普遍存在的缺陷。
Java
250
star
11

Strict-DataBinding

善用 DataBinding 彻底解决 “View 实例的 Null 安全一致性问题”
Java
94
star
12

PUA-Immunity

致创作者:免疫 “网络暴力和打压” 的 高频认知补丁
Java
80
star
13

KeyValueX

消除 Android 项目 Key-Value 样板代码
Java
74
star
14

SealedClass4Java

让 Java 1.8 也能像 Kotlin 一样使用 Sealed Class。Make Java 1.8 use Sealed Class like Kotlin
Java
11
star
15

kunminx.github.io

KunMinX's Blog
HTML
5
star
16

KunMinX

3
star