依赖注入:匕首移除子图
Dependency Injection: Dagger removing sub-graph
当您想将子对象图添加到您使用的全局对象图时:
newObjectGraph = objectgraph.plus(new SubModule("SomeConfig"));
现在你已经完成了 SubModule,你想放手(或者你可能想用 SubModule("AnotherConfig") 替换它)。你会怎么做?事实上,我需要做任何事情吗? 或者我可以简单地做:
anotherNewObjectGraph = objectgraph.plus(new SubModule("AnotherConfig"));
PS:此问题基于 Jake Wharton 在 Android 上关于 Dagger.1 的介绍。
不完全确定我是否理解正确,但我会尝试在这里阐明一些问题。 Dagger 的 plus
方法创建一个新图并保持旧图不变。来自文档:
Returns a new object graph that includes all of the objects in this graph...
这意味着只要您保留 "root" 对象图的实例(在您的示例中为 objectGraph
),您将始终能够创建范围图(或 sub-graphs 如果你喜欢命名的话)。
因此在您的示例中,newObjectGraph
和 anotherNewObjectGraph
是完全不同的图表,它们仅共享 objectGraph
.
中的内容
这是 ObjectGraph 的 link 到 github file。
只要您不保留对范围图的引用,GC 就会为您清理它们。
当您想将子对象图添加到您使用的全局对象图时:
newObjectGraph = objectgraph.plus(new SubModule("SomeConfig"));
现在你已经完成了 SubModule,你想放手(或者你可能想用 SubModule("AnotherConfig") 替换它)。你会怎么做?事实上,我需要做任何事情吗? 或者我可以简单地做:
anotherNewObjectGraph = objectgraph.plus(new SubModule("AnotherConfig"));
PS:此问题基于 Jake Wharton 在 Android 上关于 Dagger.1 的介绍。
不完全确定我是否理解正确,但我会尝试在这里阐明一些问题。 Dagger 的 plus
方法创建一个新图并保持旧图不变。来自文档:
Returns a new object graph that includes all of the objects in this graph...
这意味着只要您保留 "root" 对象图的实例(在您的示例中为 objectGraph
),您将始终能够创建范围图(或 sub-graphs 如果你喜欢命名的话)。
因此在您的示例中,newObjectGraph
和 anotherNewObjectGraph
是完全不同的图表,它们仅共享 objectGraph
.
这是 ObjectGraph 的 link 到 github file。
只要您不保留对范围图的引用,GC 就会为您清理它们。