| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> TheRouter 的跨模块依赖注入实现原理 -> 正文阅读 |
|
[移动开发]TheRouter 的跨模块依赖注入实现原理 |
`TheRouter`用于跨模块通信设计的`ServiceProvider`,核心设计思想是参考了SOA(面向服务架构)的设计方式。 ? ? 具体到 Android 侧就是 AIDL 类似的实现。
- 支持跨模块依赖注入 ### 1.0 依赖注入 用于跨模块通信使用,核心设计思想是参考了[SOA(面向服务架构)](https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84/8258990) 的设计方式。 ? ? #### 1.1 声明接口服务 首先声明一个接口,放入公共依赖层 ? ```java #### 1.2 服务使用方 ? 也就是上面例子的 A订单模块,他需要使用获取用户信息的服务 ```java #### 1.3 服务提供方 ? 服务提供方需要声明一个提供服务的方法,用`@ServiceProvider`注解标记。 ? - 如果是 java,必须是 public static 修饰 ```java // 也可以直接返回对象,然后标注这个方法的服名是什么 ### 2.0 自定义服务拦截器 ? **使用场景**:单模块调试时,可能会有需要 mock 其他模块提供的服务,TheRouter 允许自定义其他模块的实现。 ?? ```java ### 3.0 服务缓存 服务提供方运行对提供的服务做配置,对于无状态的服务,尽可能使用缓存方式减少对象创建次数,而有状态的服务,则每次创建新对象保证多次调用有不会互相污染状态(例如订单状态管理、商品销售状态等服务)。 ? ? ? 声明服务缓存只需要在 @ServiceProvider的方法上新增额外注解即可,例如下面示例代码: ? - **Singleton** 表示这个对象会被永久缓存,对外部调用方而言相当于这个对象声明成了单例 **注**:*如果两个注解同时被添加,则只有`Singleton`会生效。* ? ```java // 注:如果都不加,默认是LRU+软引用缓存
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/1 0:45:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |