@evomed

Можно ли обращаться к фасаду из класса, который этот фасад вызывает?

Есть фасад Payments. Он связан с реализацией PaymentManage который вызывает различные классы платежей. Например CreatePayment и CheckStatus. Эти классы связаны с абстрактным PaymentService и у них внутренние связи налажены через parent. Но есть еще PriceConvert, который также вызывается в PaymentManage. И вдруг в CheckStatus мне понадобился PriceConvert. Я могу вызывать его через фасад Payments::priceConvert? Или мне нужно создать объект PriceConvert и вызвать нужный метод? Просто с одной стороны фасад Payments лежит ниже чем эти классы - это просто точка доступа для контроллеров итд. И я не могу обращаться с высокого уровня на низкий. С другой стороны создавать объекты, когда есть фасад тоже не хочется. По эстетическим соображениям и пока не понимаю что может произойти т.к. все равно юзаю фасад и если что подменяться будет как раз реализация, а не фасад. Как будет правильно?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
Весь вопрос звучит как какой-то оверинжиниринг.
0. Без диаграмм вообще поток мыслей сложно понять.
1. Фасад - это не способ легализовать божественный класс.
2. Циклические зависимости - это не всегда смертельно плохо, но всегда очень подозрительно.
3. Не нужно накидывать все паттерны, какие ты знаешь, если только что прочитал какую-то умную книжку или статью. Иногда лучше всё-таки сделать по принципу KISS и YAGNI.

Или мне нужно создать объект PriceConvert и вызвать нужный метод?

Зачем на каждую мелкую операцию делать отдельный класс и создавать постоянно новые объекты?

Просто с одной стороны фасад Payments лежит ниже чем эти классы - это просто точка доступа для контроллеров итд.

Фасад же типа по определению должен быть выше всех, как наиболее высокий уровень абстракции. С чего это вдруг он оказался ниже всех? И что у тебя подразумевается под контроллерами? Обычно контроллерами в вебе называют обработчики http-запросов. Тогда контроллеры должны зависеть от фасада, а не наоборот.

и у них внутренние связи налажены через parent
.
Что это вообще значит?

Payments::priceConvert

Почему вообще платежи отвечают за конвертацию курсов валют? Или что делает priceConvert?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы