У меня есть приложение, которое имеет много внешних зависимостей от аппаратных систем. Я хочу провести модульное тестирование сервисов, которые взаимодействуют с этими аппаратными системами, поэтому я абстрагирую внешнюю часть каждого сервиса, чтобы я мог заменить его на Mock в модульном тесте. В модульном тесте я внедряю внешние зависимости в конструктор сервиса.
В моем производственном коде у меня есть центральное место для регистрации всех внешних зависимостей. Примерно так:
public class DependencyContainer : UnityContainer
{
private static DependencyContainer instance;
public static DependencyContainer Instance
{
get
{
if (instance == null)
instance = new DependencyContainer();
return instance;
}
}
private DependencyContainer() : base()
{
RegisterTypes();
}
private void RegisterTypes()
{
this.RegisterSingleton<IExternalService1, ExternalService1>();
this.RegisterSingleton<IExternalService2, ExternalService2>();
this.RegisterSingleton<IExternalService3, ExternalService3>();
}
}
Это просто замаскированный анти-паттерн Service Locator или это разумный способ зарегистрировать мои зависимости?