зависимости всегда создаются, даже если они мне не нужны. Это хорошо?
Хотя не каждая часть класса требует зависимости, сам класс нуждается в этой зависимости, и поэтому не является необязательной зависимостью. Обычно, когда вы видите, что некоторые зависимости используются в одной части класса, а другие - в другой, ваш класс может нарушать SRP ; это может делать больше, чем одну вещь. Однако их разделение, вероятно, не поможет, поскольку классы MVC Controller
больше ориентированы на интерфейсы, поэтому я бы просто оставил все как есть.
Создание объекта обходится дорого и занимает много памяти.
Типы ссылок всегда имеют 8-байтовые издержки (на 32-битной платформе), так что это немного. Сервисный объект, который вы обычно внедряете, содержит очень мало состояний, часто только некоторые значения конфигурации и ссылки на их зависимости. С точки зрения памяти, это ничто по сравнению с данными, которые проходят через ваше приложение (например, данные из базы данных или строки, которые генерируются MVC для построения HTML). Это зависит от используемой вами структуры DI, но обычно даже относительно большой граф зависимостей генерируется за доли секунды. И даже когда построение графиков занимает слишком много времени, существуют и другие способы оптимизации производительности. Например, подумайте о том, чтобы определить некоторые услуги с единым стилем жизни. Когда этого недостаточно, вы можете рассмотреть возможность перехода на более быструю структуру DI. StructureMap, однако, является одним из более быстрых DI-контейнеров в поле (из наиболее известных), поэтому для нормальной разработки приложений это не должно быть проблемой.