【发布时间】:2016-04-22 14:42:34
【问题描述】:
我发现 tutorial 很好,它展示了依赖注入的工作原理。
但我还是不明白我们需要它的目的是什么?
我可以理解如何使用抽象,但我不明白我们需要以下代码的目的:
- (BNRItemsViewController *)itemsViewController {
return [TyphoonDefinition withClass:[BNRItemsViewController class] configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(itemStore) with:[self store]];
}];
}
- (id<BNRItemStore>)store {
return [TyphoonDefinition withClass:[BNRItemStoreImpl class] configuration:^(TyphoonDefinition *definition) {
[definition useInitializer:@selector(sharedStore) parameters:^(TyphoonMethod *initializer) {
definition.scope = TyphoonScopeLazySingleton;
}];
}];
}
itemsViewController 到底是什么,它是如何被调用的,以及我们如何在不将其设置在外部的情况下获取项目。
注入的主要目标是什么?所以我可以这样做看起来很简单:
BNRItemsViewController *vc = ...
vc.itemStore = [BNRItemStore ...]
使用库对我有什么好处?
【问题讨论】:
标签: dependency-injection typhoon