【发布时间】:2015-11-21 06:42:28
【问题描述】:
上下文如下:
我有代表发送到作业队列的作业的作业类。 目前我们仅将 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 以及将来可能出现的所有其他网桥。我想过使用工厂模式来解决这个问题,但似乎有点过头了。
有什么想法吗?
【问题讨论】:
标签: php design-patterns bridge