Зачем использовать фреймворк IoC

Я читал о фреймворках 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. Еще раз спасибо.

Я бы проголосовал за ваши ответы, но получаю оранжевое сообщение о том, что не могу.

Спасибо парню, который выделил опубликованный мной код.

6
задан Rafael Enriquez 28 September 2010 в 20:32
поделиться