邮件队列服务的包装设计模式

时间:2017-02-01 03:34:00

标签: design-patterns rabbitmq zeromq amazon-sqs mq

我想设计一个与Message Queue(s)f对话的包装器。包装器的实现应该足够通用,以便如果库的客户端想要从一个MQ提供程序(例如 RabbitMQ )切换到另一个MQ,则不必进行任何代码更改。服务(例如 Amazon SQS )。

您会为图书馆推荐哪种设计模式?为什么?

1 个答案:

答案 0 :(得分:3)

您正在寻找Adapter设计模式。

假设您有两种排队技术:Q1和Q2。它们中的每一个都提供了与它们交互的不同方法。课程设计如下:

  • 使用通用方法创建一个界面,例如IQueue。例如,getMessage(),postMessage()和deleteMessage()。
  • 对于Q1,创建一个由Q1-client组成的适配器并扩展IQueue。同样,对于Q2。
  • 将您的申请编码为IQueue。然后,从Q1切换到Q2只需要将一个适配器类替换为另一个适配器类。