Кто-то сказал мне, что до того, как появились рамки внедрения инъекций, разработчики будут использовать фабрику для реализации DI. Может ли кто-нибудь представить пример использования заводского шаблона для DI. Я имею в виду, просто подумав об этом, фабрика - это инжектор, но я не могу найти какие-либо примеры в Интернете.Могу ли я использовать Factory для внедрения инъекции зависимостей
ответ
Это с верхней части моей головы, непроверенный код (с C#)
public class CarFactory : ICarFactory{
private static CarFactory instance = null;
public static ICarFactory SingletonInstance {
get {
if (this.instance == null){
this.instance = new CarFactory();
return this.instance;
}
},
set {
this.instance = value;
}
}
public ICar CreateCar(string make){
switch(make)
{
case "Toyota": return new Toyota();
case "Honda" : return new Honda();
default: throw new Exception();
}
}
}
public interface ICarFactory {
ICar CreateCar(string make);
}
public class Toyota : ICar
{
}
public class Honda : ICar
{
}
И обычая было бы что-то вроде:
ICar car = CarFactory.SingletonInstance.CreateCar("Toyota");
Разоблачение одноплодной экземпляр CarFactory публично позволяет издеваются над CarFactory за ваши юнит-тесты, и вы можете получить издевательство над CarFactory, посмеявшись над ICars при вызове CreateCar.
Теперь замените Автомобили на заводе фактическими зависимостями, такими как классы, которые реализуют службы. И вуаля, у вас есть Factory, который содержит все ваши зависимости. Теперь вы можете использовать Factory для «разрешения» ваших зависимостей. Вы можете взять пример и толкать его дальше, используя общие типы и словарь (хеш), где ключ является имя типа и значение экземпляра реализации, такие как:
public T Create<T>(){
return mydictionary.get(typeof(T).Name);
}
Что-то в этом роде ... Вы дрейф ...
Надеюсь, это поможет!
, и тогда вы согласитесь, что инъекция зависимостей - это не что иное, как заводская реализация? – j2emanue
разве это не просто дает вам локатор сервисов, а не инъекцию зависимостей? См. Ответы на [этот вопрос] (http://stackoverflow.com/questions/1557781/whats-the-difference-between- the-dependency-injection-and-service-locator-patte). –
Существует несколько способов использования инъекции зависимостей: 1 # должна иметь зависимость, «введенную» в ваш класс через ваши сеттеры. 2 # должен иметь ваши зависимости «впрыскиваться» через конструктор вашей классы. 3 #, чтобы ваши зависимости были доступны через глобальный объект, в данном случае CarFactory.SingletonInstance (поскольку он является статическим). Мне нравится глобальный объектный подход, поскольку он делает фокус подписчика вашего конструктора на бизнес-объектах (что имеет значение). Более причудливые рамки DI также позволяют специальным атрибутам метода «вводить» зависимости. – TchiYuan
- 1. Могу ли я использовать инъекцию зависимостей для всех зависимостей?
- 2. Внедрение внедрения зависимостей Autofac
- 3. Как я могу использовать инъекции зависимостей в angular2
- 4. Могу ли я использовать специальный метод для инъекции зависимостей в ejb?
- 5. Цель внедрения зависимостей каркасов
- 6. Есть ли инфраструктура инъекции зависимостей для Smalltalk?
- 7. Основная проблема внедрения зависимостей
- 8. Использует ли подготовленный оператор для предотвращения внедрения SQL-инъекции?
- 9. Статический класс для инъекции зависимостей
- 10. консолидация кода для шаблона инъекции зависимостей
- 11. Sinonjs, как использовать класс инъекции зависимостей?
- 12. Как правильно использовать инъекции зависимостей в Angular2?
- 13. Как использовать инъекции зависимостей в UserControls & Forms
- 14. Могу ли я использовать DefaultBinder для инъекций зависимостей?
- 15. Могу ли я использовать gradle для получения зависимостей тестовых данных?
- 16. Перерыв циклической зависимости для использования инъекции зависимостей
- 17. WCF и инъекции зависимостей
- 18. Следует ли использовать CSLA с каркасом инъекции зависимостей?
- 19. Является ли использование статических фабрик допустимым шаблоном для инъекции зависимостей?
- 20. Могу ли я использовать шаблон Factory в этом сценарии?
- 21. Могу ли я использовать сервисные функции Factory в заводских условиях?
- 22. Инъекции зависимостей Дополнительные параметры
- 23. Подключить стороннюю инфраструктуру внедрения зависимостей с ReactiveUI
- 24. Соответствие инъекции зависимостей
- 25. Выбор типа инъекции зависимостей
- 26. Правильно ли это использование инъекции зависимостей?
- 27. ленивое разрешение инъекции зависимостей
- 28. Могу ли я использовать AngularJs для внедрения Injection Dependency в моем мобильном приложении Titanium?
- 29. Сервисный клиентский интерфейс для простой инъекции зависимостей?
- 30. Как использовать CDI и инъекции зависимостей
Этот ответ может помочь. «Зависимость впрыска против заводского шаблона»: http://stackoverflow.com/a/12399680/4797330 – BranLakes