Я нашел хорошее руководство, в котором показано, как работает внедрение зависимостей.
Но я так и не могу понять, для каких целей он нам нужен?
Мне было понятно, как использовать абстракцию, но я не понимаю, для каких целей нам нужен этот код ниже:
- (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 ...]
в чем преимущество для меня использования библиотеки?