解耦框架 ModularizationArchitecture 学习解析
2017-03-20 10:52
218 查看
ModularizationArchitecture Demo结构分析
引导
作者对于框架结构的思考:http://blog.spinytech.com/2016/12/28/android_modularization/
项目Github地址:https://github.com/SpinyTech/ModularizationArchitecture
项目的使用:
http://blog.spinytech.com/2017/02/01/ma_get_start_cn/
解耦和框架的原则
1. 单一职责,意味着一个模块、一个组件只做一件事,绝不多做。2. 正交性,意思是不重复,一个模块跟另一个模块的职责是正交的,没有重叠,组件也是一样。
3. 单向依赖,模块之间最多是单向的依赖,如果出现A依赖B,B也依赖A,那么要么是A、B应该属于一个模块,要么就是整体的拆分有问题。一个完整的软件系统的模块依赖应该是一张有向无环图。(当然这是最终理想=。=)
4. 紧凑性,模块、组件对外暴露的接口、属性应该尽可能的少,接口的参数个数也要少。
5. 面向接口,模块、组件对外提供服务时最好是面向接口的,以便后期可以灵活的变更实现。
关键词
l 主App Module:Android studio中的可运行的Module,项目的主Modulel 模块Library Moudule:Android studio中的Library Module,模块化中的单一业务或功能组件
l 测试App Module:Android studio中的可运行的Module,用于测试某一个模块Library的可运行的壳子Module
l Action:跨模块调用的具体实现
l ActionResult:Action调用后返回的结果
l Provider:Action簇,将一组Action放到一起,便于注册
l RouterRequest:调用Action时的请求信息
l RouterResponse:Action调用完成之后的响应信息
l LocalRouter:单进程本地局域路由器
l WideRouter:多进程广域路由器
l LocalRouterConnectService:本地路由器Service,用于和广域路由器连接,进行AIDL跨进程通信
项目结构分析:
整体项目结构框架
项目框架:
分析:
这里我们有一个主的 moudule main,它相当于一个皮包公司,所有业务都通过一个中介router公司,将业务外包出去给对应的外包module,外包的module完成独立的功能。按照单向依赖原则,所有的外包module如果和其他外包module或者和我们的皮包公司有业务往来都不能直接去找对方公司的人,都必须依赖中介router。这就是控制反转的思想。外包mudule:在外包module中,根据面向接口的原则,外包module暴露给中介router的都是一些接口方法,在这个项目里,通过action来对module要暴露出去的功能进行相应的封装,而内部调用就正常调用就好了。为了能把自己的外包业务功能告诉雇主,他自己要把功能项列成一个map然后提供给中介router。
中介router:在中介router那里,外包module还需要将自己的module名提供给中介router,让主module在订购功能的时候可以查询到对应的外包module。
请求流程:
分析:
在这个流程为皮包公司app在调用外包module的action业务的整体流程:皮包公司A先去中介router那里查询能实现对应功能的皮包公司module。中介router通过查询注册到自己那里的外包公司module之后去查看外包公司给自己的业务清单provider,找到对应业务action之后。让后中介公司router就可以直接命令外包公司module去执行action动作,并获得对应的结果,然后再将结果发送给皮包公司app。整套流程调用完毕。
Demo分析
总览module
对于module的分析
maindemo
AsyncAction picdemo
相关文章推荐
- Android源码学习之六——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- Android 学习笔记之Volley开源框架解析(三)
- android应用程序窗口框架学习(1)-view绘制流程源代码解析
- 框架学习笔记:深度解析StrangeIoC内部运行机制
- AS3----Spring 框架学习笔记(一)----xml标签解析
- iOS学习----------SDWebImage框架解析(1)
- Android 学习笔记之Volley开源框架解析(一)
- Android学习记录之Volley网络通信框架基础解析(1)
- Android源码学习之六——ActivityManager框架解析
- Android源码学习——ActivityManager框架解析
- 【SSH之旅】一步步学习Struts1框架(三):解析对比Struts1实例
- Android源代码学习之六——ActivityManager框架解析
- Android 学习笔记之Volley开源框架解析(二)
- 深度学习框架caffe代码解析一:主要类的关系说明
- Android源码学习之六——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- fastJson解析框架的学习
- Android 学习笔记之Volley开源框架解析(四)
- MVC学习笔记_ORM_框架_解耦