Здесь приведён пример стратегии на PHP: https://refactoring.guru/ru/design-patterns/strategy/php/example#example-1
Вопрос в следующем: Почему в этом примере нет класса, хранящего ссылку на класс стратегию (на класс, реализующий PaymentMethod), как это описано в этом же разделе? Правильная ли это реализация данного паттерна?
Пример честно говоря запутанный и неудачный. Там реализация сразу и фабрики, и стратегии. Посмотрите лучше на другом ресурсе другие реализации этого паттерна.
Причем как я понял обе стратегии не используются.
В чем там алгоритм:
1) Смотрите на метод get контроллера, а нем происходит работа роутера - по регулярному выражению находится метод оплаты:
$controller->get("/order/1/payment/paypal"); - это стратегия для пайпала
$controller->get("/order/1/payment/сс"); - это стратегия для карты (в примере почему то этого нет)
2) Дальше идет поиск метода оплаты:
preg_match('#^/order/([0-9]+?)/payment/([a-z]+?)(/return)?$#', $path, $matches)
// Способ оплаты (стратегия) выбирается в соответствии со значением,
// переданным в запросе.
$paymentMethod = PaymentFactory::getPaymentMethod($matches[2]);
$matches[2] будет равно или 'paypal' или 'cc'
$paymentMethod - это как раз реализация PaymentMethod interface
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Написал (но и сейчас пишу) библиотеку для работы с APIДля библиотеки создал папку с названием amoNG и туда при разработке поместил все файлы
Как отключить уведомления на почту администратора сайта о действиях зарегистрированных пользователей? к примеру пользователь поменял пароль,...
Это мой первый и тестовый проект на laravelПодскажите пожалуйста как можно можно вывести определенный атрибут в зависимости от локализации...