Я читал о фреймворках 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», передавая ему экземпляры «Sword», например:
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 ОТВЕТОВ : Мне очень понравились все ответы, которые я получил от вас, ребята. Я только что прочитал этот пост dependency-инъекция-рассечение / , где парень использовал его для модульного тестирования и ссылку на StackOverflow, которую вы только что предоставили, и да, мне не хватало части большой-большой-большой сложности, так что позвольте себе использовать фреймворк IoC. Еще раз спасибо.
Я бы проголосовал за ваши ответы, но получаю оранжевое сообщение о том, что не могу.
Спасибо парню, который выделил опубликованный мной код.