Contents
Component的组织关系与SubComponent
多个Component之间有相同的依赖,那么该如何处理它们之间的关系?
前言
先看下面一个场景
|
|
Man 有一辆车,Friend 没有车,但是他可以借 Man 的车出去游玩下,提供 Car 实例的CarModule不变,那么我们应该怎么设计 Component 呢?
很多人第一时间会想到下面的这种设计:
|
|
这种做法是最简单的,把Component需要的依赖都在modules属性中声明,但是这样有两个问题:
- 有时候依赖实例需要共享,例如上面的场景,Friend的Car是向Man借的,所以
FriendCommonent应该使用ManComponent中的实例。 - Scope作用域容易失效,例如
carModule的provideCar()使用@Singleton作用域,FriendComponent和ManComponent也要用@Singleton标注,但是它们都会持有一个Car实例。
所以FriendComponent需要依赖ManComponent提供的Car实例,这就是Component组织关系中的一种。
Author zhangwlhaut
LastMod 0001-01-01