【问题标题】:Instantiating objects that need to be injected with Bridge (pattern) objects. How should I do it?实例化需要注入桥(模式)对象的对象。我该怎么做?
【发布时间】: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


    【解决方案1】:

    我完全不使用 Bridge 解决了这个问题。

    AbstractQueueClient 的实现将以他们认为合适的方式处理来自 Job 实现的 ->toArray()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多