Кто-нибудь может объяснить, как шаблон стратегии связан с инверсией контроля? - PullRequest
3 голосов
/ 23 декабря 2008

Кто-нибудь может объяснить, как именно Шаблон стратегии относится к инверсии контроля?

Ответы [ 4 ]

6 голосов
/ 23 декабря 2008

Когда вы используете шаблон стратегии, вы хотите, чтобы другие классы зависели от интерфейса, а не от конкретной стратегии. Один из способов сделать это - внедрить конкретную стратегию в класс, который использует ее в качестве интерфейса, вместо того, чтобы класс понимал, как создать соответствующую стратегию. Вот тут и вводится IoC / Dependency Injection.

Идея состоит в том, что у вас есть какая-то конфигурация или класс решений, который определяет, какие стратегии использовать. Это может быть инфраструктура IoC, но это необязательно. Этот класс отвечает за настройку других ваших классов с соответствующей стратегией, основанной на состоянии системы или конфигурации. Конкретная стратегия создается и внедряется через конструктор или свойство settor, и, таким образом, «контроль» над тем, какой класс стратегии создается, «инвертируется» - это не делается классом в зависимости от него, а скорее извне.

2 голосов
/ 23 декабря 2008

Сам по себе шаблон не вводит инверсию управления. Если разработчик шаблона реализует его так, что заменяемый алгоритм вводится в контроллер, то это инверсия. Если разработчик, с другой стороны, получает алгоритм для использования из какого-либо другого источника (такого как конфигурация, или определяет его в конструкторе контроллера с помощью других средств), то это просто ваш тип пробной версии кода.

0 голосов
/ 12 мая 2011

IOC можно рассматривать как принципала (цели), который может быть достигнут с использованием шаблона (средства) стратегии, так как шаблон servicelocator мог бы стать другим вариантом.

0 голосов
/ 19 апреля 2010

Нет, МОК - это совсем другое, вы можете узнать больше о МОК и ДИ здесь, чтобы получить реальную идею

http://www.codeproject.com/KB/aspnet/IOCDI.aspx

...