Как обрабатывать функцию с множеством зависимостей

У меня есть метод, который зависит от многих других классов, как это

public function getProfileData(
ProfilesService $profile_service,
ContactInfoService $contact_info_service,
CoursesService $courses_service,
InterestsService $interests_service,
LanguagesService $languages_service,
PersonalInfoService $personal_info_service,
ProjectsService $projects_service,
SkillsService $skills_service,
AwardsService $awards_service,
EducationsService $education_service,
ExperiencesService $experiences_service,
TargetJobsService $target_jobs_service,
ProfileHiddenSectionsService $hidden_sections_service) { }

Я читал о внедрении зависимостей и знаю, что если вы превышаете 6-10 зависимостей, это приводит к запаху кода.

Но это getProfileData() Метод действительно нуждается во всех этих зависимостях, так что как лучше всего решить эту проблему ?!

1

Решение

Запах кода, который вы испытываете, называется Конструктор перед впрыском (и этот конкретный вариант Метод передержки). Как сказал @Nkosi в комментариях, источником этого является Принцип единой ответственности нарушение.

Как решить эту проблему, однако, в значительной степени зависит от ситуации. Глава 6 из книги Внедрение зависимостей: принципы, практика, модели на самом деле содержит очень сложное описание ваших вариантов. Короче говоря, вы можете использовать следующие рефакторинги:

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector