2015-08-27 6 views
1

Контекст:Создание объектов, которые нужно вводить объектами Bridge (pattern). Как я должен это делать?

У меня есть класс Job, который представляет задание, которое отправляется в очередь заданий. В настоящее время мы используем только SQS для этой цели, но в будущем мы можем перейти на Redis или другое решение MQ. Итак, в настоящее время у меня есть AbstractJob, который может быть расширен в ConcreteJobOne и ConcreteJobTwo и может потребляться AbstractQueueClient (который может быть SqsQueueClient). Мне нужен способ получить полезную нагрузку из объекта Job, то, что я придумал, использовал bridge pattern.

$parameters = []; 
$sqsClient = new AbstractQueueClient(); 
$jobOne = new ConcreteJobOne($parameters, new SqsPayloadBridge()); 
$sqsClient->queueSingleJob($jobOne); 

С этим я могу изменить способ создания полезной нагрузки для конкретного клиента.

Но Контроллер, который заботится о очередности работы, должен знать о SqsPayloadBridge и всех других мостах, которые могут появиться в будущем. Я подумал об использовании шаблона Factory, чтобы решить эту проблему, но, похоже, излишний.

Любые мысли?

ответ

0

Я решил это, не используя мост вообще.

Реализации AbstractQueueClient будут обрабатывать -> toArray() из реализаций Job так, как они считают нужным.

 Смежные вопросы

  • Нет связанных вопросов^_^