Что хорошая аналогия должна понять МОК и DI?

Что хорошая аналогия должна понять МОК и DI?

10
задан GilliVilla 20 July 2010 в 16:23
поделиться

3 ответа

Если взять классический пример автомобиля. Вы можете пройти через обычный процесс покупки автомобиля и взять колеса, которые дает вам производитель:

public class Fifteens
{
    public void Roll() { Console.WriteLine("Nice smooth family ride..."); }
}

public class Car
{
    Fifteens wheels = new Fifteens();

    public Car() { }

    public void Drive() { wheels.Roll; }
}

Затем:

Car myCar = new Car(); 
myCar.Drive() // Uses the stock wheels 

Или вы можете найти собственный конструктор автомобилей, который позволит вам точно указать, какое колесо вы хотите использовать в своей машине. , при условии, что они соответствуют спецификациям колеса:

public interface IWheel
{
    void Roll();
}

public class Twenties : IWheel
{
    public void Roll() { Console.WriteLine("Rough Ridin'...");
}

public class Car
{
    IWheel _wheels;

    public Car(IWheel wheels) { _wheels = wheels; }

    public void Drive() { wheels.Roll(); }
}

Затем:

Car myCar = new Car(new Twenties()); 
myCar.Drive(); // Uses the wheels you injected.

Но теперь вы можете ввести любое колесо, какое захотите. Имейте в виду, что это всего лишь один из видов внедрения зависимостей (внедрение конструктора), но он служит одним из самых простых примеров.

7
ответ дан 4 December 2019 в 00:59
поделиться

Мартин Фаулер проделал огромную работу , объясняя эти закономерности .

2
ответ дан 4 December 2019 в 00:59
поделиться

Есть несколько различных аналогий, которые облегчают понимание инверсии управления. В обычной жизни мы переживаем это по-разному, поэтому мы заимствуем форму в коде. Одна аналогия называется "Цепь командования" в армии.

Это, вероятно, самая четкая параллель с Инверсией контроля. Военные снабжают каждого новобранца основными вещами, необходимыми ему для работы в его звании, и отдают команды, которым новобранец должен подчиняться. Тот же принцип применяется в кодексе. Каждый компонент получает от инстанцирующего субъекта (т.е. командира в данной аналогии) необходимые для работы положения. Затем инстанцирующая сущность действует на этот компонент так, как ему нужно действовать.

Подробнее здесь:

Есть ли у кого-нибудь хорошая аналогия для внедрения зависимостей?

2
ответ дан 4 December 2019 в 00:59
поделиться