У меня есть метод, который зависит от многих других классов, как это
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()
Метод действительно нуждается во всех этих зависимостях, так что как лучше всего решить эту проблему ?!
Запах кода, который вы испытываете, называется Конструктор перед впрыском (и этот конкретный вариант Метод передержки). Как сказал @Nkosi в комментариях, источником этого является Принцип единой ответственности нарушение.
Как решить эту проблему, однако, в значительной степени зависит от ситуации. Глава 6 из книги Внедрение зависимостей: принципы, практика, модели на самом деле содержит очень сложное описание ваших вариантов. Короче говоря, вы можете использовать следующие рефакторинги:
Других решений пока нет …