Как реализовать присоединение пакета к laravel через интерфейс?

Добрый день, опишу подробней с примером проблему.
Имеется 2 пакета, которые выполняют аналогичные функции (занимаются перекодировкой изображений, к примеру)
pack1 u pack2, как быстро и лихо менять их в системе (не создавая фабрику, фабрика мне не подходит), используя паттерн "адаптер", грубо говоря просто заменив pack1 на pack2 и при этом чтобы система не сломалась.
И вообще нужно ли это вообще на будущее предусматривать для остальных пакетов?
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
gzhegow
@gzhegow
Думал, стану умнее, когда адаптируюсь, но нет
Если тебе поможет, то я понимаю интерфейсы таким образом:

Это име4на неких кусков программы, о которых ты можешь пояснить даже директору.

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

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

По итогу у тебя будет два интерфейса. Один на обертку с методом переключить, второй на функционал. Можно обойтись и без интерфейса на обертку, тогда неиудастся сделать абстрактный переключатель для любой штуки в программе, будешь писать под каждый включатель новый коасс
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
app()->make(\App\ServiceA::class)
app()->make(\App\ServiceB::class)

Аргумент храни в бд и переключай в интерфейсе
Ответ написан
Ваш ответ на вопрос

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

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