Я разрабатываю новый компонент для системы, стараюсь следовать различным рекомендациям по DI, чтобы мы получали отдачу с точки зрения изоляции, насмешек и т. Д.
Итак, у меня есть следующие компоненты (проиллюстрировано как абстракция):
- Fetcher - поддерживает IFetcher, который
извлекает данные из определенных данных
источник. Возвращает IDataSource.
- Builder - поддерживает IBuilder, который
строит структуру из IDataSource.
Я хотел бы обернуть их в компонент «Исполнитель» (если не хватает имени), который будет делать следующее:
IDataSet Performer.Perform(IFetcher fetcher, IBuilder builder)
{
IDataSource ds = fetcher.Fetch();
return builder.BuildDataSet(ds);
}
Чтобы выполнить рекомендации по внедрению зависимостей и LoD (насколько я понимаю, в любом случае), я передаю компоненты IFetcher и IBuilder.
Мой вопрос - это звучит как приемлемый дизайн? Беседы с коллегами по работе идут по принципу «да, звучит хорошо», но не на 100% убеждены в инкапсуляции класса Performer.
На мой взгляд, Performer представляет собой составной элемент управления, который склеивает несколько разрозненных компонентов, что должно быть приемлемо. Единственный вопросительный знак - должен ли я иметь «Фабрику исполнителей», но это кажется излишним, учитывая, что фактические компоненты (IFetcher и IBuilder) могут быть смоделированы.
Любые мысли будут оценены, спасибо.