组件化模块化
[TOC] 在移动应用上由于应用本身与使用者相贴近,日常开发中难免的需求变更朝令夕改、朝三暮四,尤其遇到没啥规范流程的或者形式主义流程;
关于组件化模块化是什么及其优点不再赘述,在此补充点优点而已:减少名言的联想
Linus:Read the fucking source code
我们的终极目标不仅是解耦等。简化、轻量化框架,减少过分约束而给予组件/模块内充分的自由,从初始设计已有两年余,由于重复搬砖没得时间记录, 文章中尽量不贴fucking code,有良好的思路大家都会有很好合适自身需求的实现。
组件 模块
鉴于网上很多文章对于组件和模块的定义众说纷纭,再次声明本文定义,参考资料来源维基百科
基于组件的软件工程(Component-based software engineering,简称CBSE**)或基于组件的开发(Component-Based Development,简称CBD)是一种软件开发范型。它是现今软件复用理论实用化的研究热点,在组件对象模型的支持下,通过复用已有的构件,软件开发者可以“即插即用”地快速构造应用软件。这样不仅可以节省时间和经费,提高工作效率,而且可以产生更加规范、更加可靠的应用软件
网络请求
//登录请求
private void click() {
getViewModel(LoginViewModel.class)
.sendAction(new RequestAction()
.setTipsArgs(new VmTipsArgs.Builder().tipMessage("请求失败了").build())).
doOnData((action, data) -> {
AppLog.d(TAG, "发起登录成功 doOnData1=", data);
showToast("登录成功1" + data);
})
.doOnData((action, data) -> {
AppLog.d(TAG, "发起登录成功 doOnData2=", data);
showToast("登录成功2" + data);
})
.doOnDone(action -> {
AppLog.d(TAG, "发起登录完成1");
showToast("登录结束");
})
.doOnListener(action -> {
AppLog.d(TAG, "开始登录 loading....");
showToast("loading....");
})
.doOnDone(action -> {
AppLog.d(TAG, "发起登录完成2");
})
.doOnError((action, e) -> {
AppLog.d(TAG, "登录失败");
})
;
}
日志
MainActivity doOnListener开始登录 loading....
MainActivity doOnData发起登录成功 doOnData1= "{uid:123}"
MainActivity doOnData发起登录成功 doOnData2= "{uid:123}"
MainActivity doOnDone发起登录完成1
MainActivity doOnDone发起登录完成2
组件化模块化需要解决的问题
解决问题
-
问题2:【掘金】Android组件化之组件/模块初始化注册到application;组件生命周期注册
... 未完待续...