Поделитесь опытом отделения абстракции от реализации в symfony.
Идея следующая:
Мы хотим реализовать несколько реализаций для одного и того же действия.
Например:
/**
* @Route(
* path="/bridge/call/{variant}",
* methods={"GET"}
* )
* @param string $variant
* @param AbstractionExecutor $abstractionExecutor
*
* @return Response
*/
public function call(
string $variant,
AbstractionExecutor $abstractionExecutor
): Response
{
if ($variant === 'b') {
$abstractionExecutor->setImplementation(new ConcreteImplementationB());
} else {
$abstractionExecutor->setImplementation(new ConcreteImplementationA());
}
return new Response($abstractionExecutor->exec());
}
Используется паттерн "Мост"
Взял пример здесь
Что хотелось бы узнать.
-----------------------------------------------------------------------------
- Структура хранения классов.
- Инициализация в зависимости от установленных правил.
Какие есть нюансы?
Кто решал похожую задачу?