💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
* [微信 Android 模块化架构重构实践(上)](https://cloud.tencent.com/community/article/441423) * [微信 Android 模块化架构重构实践(下](https://cloud.tencent.com/community/article/794491) 这两篇文章是微信团队分享,讲述了在业务扩张中,app整体的架构演化。需要着重一提的是,荣耀当前的架构 跟他们V3.x时代的架构 基本一致:根据业务、功能模块拆分 共用 同一层中间件 ,然后由这层中间件 来打包所有 基础的组件库,中间层之上的模块层,在横向上没有依赖关系,需要跨包跳转的地方可以ARouter 这样的路由框架来解耦,这样看起来很美好,实际上也确实能实现组件化、模块化的预期。 但需要注意的是,在实际操作中,如果顶层module1 需要用到顶层模块module2中的东西或功能,他们不涉及跳转、彼此横向上也没有依赖,一般我们采用了简洁的做法,将module2中 被需要的功能代码抽出来,下沉到 中间件这一层,从短期上看 这样确实能达到到目的,而且也十分快捷省事。但是从持续迭代来看,类似于这样的 代码下沉 操作会越来越来多,久之,也会遇到 基础中间层过于沉重的技术债务。 微信团队采用了 "pins结构" 的解决方案,通过对gradle的操作,将原来的module结构 转变成 类似 project的样式,从他们的最终结果来看,也确实能达成预期的目的。但"pins结构"对我们说,这样的跨越、学习成本不算小。如何更好的处理,因代码边界模糊造成 中间层过于沉重的问题,也值得后续进一步思考。 ARouter里面提出了 暴露服务的理念与“pins结构”类似,但实际操作,简单很多,后续会尝试这方面的工作。至于 “代码边界约束”,这就跟 “单一职责”一样,在复杂系统中,很难做到统一的定义,但也有值得思考,去做一个适合我们当前阶段的方案。 * [开源最佳实践:Android平台页面路由框架ARouter](https://yq.aliyun.com/articles/71687?t=t1) 这边文章是 ARouter项目的作者分享的一篇文章,全文从 开发中遇到的痛点困境出发,讲述了ARouter的各个功能开发的初衷,可能在最开始你可能只会用到 下面这句用于多模块的跳转: ~~~ ARouter.getInstance().build("/test/activity").navigation(); ~~~ 品读完 这边文章后,你会从更深的层次上去去更好的利用ARouter,从而不断的提升代码整体结构,。