Как бороться с чрезмерным внедрением конструктора в .NET

Простите, если этот вопрос уже обсуждался, но я не нашел именно того, что хотел. Проблема, с которой я столкнулся, больше связана с шаблонами и вариантами дизайна, чем с самой .NET. Я просто хотел бы получить ваш совет, чтобы узнать, с чего начать мой рефакторинг.

Сегодня я открыл один из классов в моем реальном приложении и обнаружил, что он имеет 13 зависимостей, введенных конструктором !!! Фактически, каждый разработчик добавил необходимую зависимость в метод, который он писал.

Один из моментов моего понимания DI заключается в том, что когда мы внедряем зависимость с помощью конструктора, это означает, что это обязательная зависимость и ее следует использовать во всех методах класса. Если нам нужна конкретная зависимость только в одном методе данного класса, что это значит для вас?

  • Данный класс делает слишком много? Я должен подумать о создании нового типа только с необходимой зависимостью?
  • Я должен вводить по свойству? Но в этом конкретном методе зависимость является обязательной, поэтому я не думаю, что это хороший выбор.
  • Я должен вводить методом?

Что сложно, так это найти правильный баланс. На самом деле иногда невозможно инкапсулировать поведение в чистом виде.

Я подумывал создать что-то вроде агрегатора сервисов, чтобы скрыть связанную зависимость от одного из них, но хотел бы, чтобы у вас были другие советы. Заранее спасибо.

12
задан markus 12 December 2012 в 11:32
поделиться