Использование внедрения зависимостей для определения того, какую реализацию создавать во время выполнения - PullRequest
1 голос
/ 26 августа 2009

Я пишу настольное ГИС-приложение, и оно поддерживает MapXtreme, MS Virtual Earth и наш Custom Map Engine. Пользователи приложения могут изменять движок карты во время выполнения, выбирая из выпадающего списка. У меня есть класс Factory для изменения движка карты как это.

public class MapFactory implements IMapFactory
{
    public IMapEngine createInstance(MapType type)
    {
       if(type==MapType.MapXtreme)
          return new MapXtremeEngine();
       else if(type==MapType.VirtualEarth)
          return new VirtualEarth();
       //....other code
    }
}

Можно ли использовать Dependency Injection Framework для создания подходящей реализации MapEngine во время выполнения по параметру типа?

1 Ответ

2 голосов
/ 28 августа 2009

Ваш пример - это правильный шаблон для условного создания объекта. Везде, где вам нужно создать экземпляр, примите IMapFactory в конструкторе.

Самое большее, что должен сделать DI-фреймворк - это раздать экземпляр IMapFactory.

...