@Qew7777 опоздал с обсуждением Factory - просто добавить хочу, что паттерн хорошо использовать чтобы изолировать condition логику выбора определенного объекта в отдельный класс. Хороший пример у Санди Метц - вот что она говорит о фабрике:
Factories are where you hide the rules for picking the right player of a role.
вот в этом видео:
https://www.deconstructconf.com/2018/sandi-metz-polly-want-a-messageМожно прокрутить на 32:00 - хотя там все неплохо. Хорошо сказано про DI - что, парни, не нужно инжектить всякую хрень (stupid things) инжектите пожалуйста smart things :)