Я читал об инфраструктурах Inversion of Control, и я просто играю с вопросом: «Почему, черт возьми, мне нужна среда для этого?»
Не поймите неправильно мой вопрос ... шаблон - это то, что мы, программисты, часто используем, но ... полнофункциональный фреймворк для этого?
Я, должно быть, что-то упустил, и именно поэтому я задаю вопрос. Я видел много примеров в Интернете, и я просто не понимаю. Возможно, мой разум заблокирован этой идеей.
Просто взгляните на пример домашней страницы Ninject:
public class Samurai {
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon) {
Weapon = weapon;
}
}
public class WarriorModule : NinjectModule {
public override void Load() {
Bind< IWeapon >.To< Sword >();
}
}
Класс "Самурай" мне подходит. Мне не нужен фреймворк NinjectModule.
Я предполагаю, что позже в коде мы будем создавать новые экземпляры "Самурая", передавая ему экземпляры "Меча", что-то вроде:
Samurai theWarrior = new Samurai(WarriorModule.GetInstance(IWeapon));//no coupling
который может быть заменен на:
Samurai theWarrior = new Samurai(new Sword());//still no coupling
или
Samurai theWarrior = new Samurai(GetWeaponFromXML());//no coupling yet
Какая часть мне не хватает? Не могли бы вы рассказать о каком-либо сценарии, где Ioc Framework может понадобиться в моем приложении?
Спасибо.
ОБНОВЛЕНИЕ ПОСЛЕ 4 ОТВЕТОВ : Мне действительно понравились все ответы, которые я получил от вас, ребята. Я только что прочитал этот пост зависимость-инъекция-диссекция / , где парень использует его для модульного тестирования и ссылку на StackOverflow, которую вы только что предоставили, и да, я упустил часть сложности "большой-большой-большой", так что давайте сам использовать фреймворк IoC. Еще раз спасибо.
Я бы проголосовал за ваши ответы, но я просто получил оранжевое сообщение о том, что не могу.
Спасибо парню, который выделил код, который я разместил.