2017-02-01 48 views
2

我想设计一个包装来与Message Queue(s)进行交谈。包装的实现应该足够通用,以便库的客户端如果想从一个MQ提供者(例如RabbitMQ)切换到另一个MQ服务(比如说Amazon SQS),则不必进行任何代码更改)。包装到消息队列服务的设计模式

你会为图书馆推荐什么样的设计模式?为什么?

+0

[STOMP](https://stomp.github.io/stomp-specification-1.2.html)? –

回答

2

您在寻找Adapter的设计模式。

假设您有两种排队技术:Q1和Q2。他们每个人都提供不同的方法来与他们进行交互。类设计如下所示:

  • 使用泛型方法创建一个接口,如IQueue。例如,getMessage(),postMessage()和deleteMessage()。
  • 对于Q1,创建一个由Q1客户端组成并且扩展为IQueue的适配器。同样,对于Q2。
  • 将您的应用程序编码为IQueue。然后,从Q1切换到Q2只需将一个适配器类替换为另一个。