-
Notifications
You must be signed in to change notification settings - Fork 208
服务发现的多实现的使用
xiaojinzi123 edited this page May 31, 2021
·
1 revision
之前的服务发现功能介绍了基础的使用. 这里再介绍一下服务发现多实现的功能.
比如我们有一个接口:
interface BillingService {
// 是否是会员
fun isPro(): Boolean
// ......
}
假设我们的 app 支持海外和国内. 海外可能使用的是 Google Play 的订阅. 国内假设使用华为之类的.
那么我们的同一个业务接口可能就有多个实现.
现在 Component 支持多实现啦.
// 海外的支付实现
@ServiceAnno(BillingService::class, name="gp")
class GPBillingServiceImpl: BillingService {
// 进行实现
}
// 华为的支付实现
@ServiceAnno(BillingService::class, name="hw")
class HWBillingServiceImpl: BillingService {
// 进行实现
}
// 进行获取:
// 1. 获取海外的支付实现:
val billingService = ServiceManager.get(BillingService::class, "gp")
// 2. 获取华为的支付实现:
val billingService = ServiceManager.get(BillingService::class, "hw")
// 如果两者有哪个就获取哪个.
val billingService = listOf("gp", "hw")
.mapNotNull { name ->
ServiceManager.get(BillingService::class.java, name)
}