0

我需要创建一些服务来与 Amazon S3 和 Riak CS 对话。

他们将处理相同的操作,例如检索图像。

由于它们返回不同的对象,在 S3 的情况下是 S3Object。将其设计为在没有通用接口的情况下为每个类设置不同的类的正确方法吗?

我一直在考虑如何对两者应用一个通用接口,但是方法的返回类型是导致我出现一些问题的原因,因为它们是不同的。我可能只是在这方面出错了,可能应该将它们分开,但我希望在这里得到一些澄清。

谢谢大家!

4

2 回答 2

1

通常,您通过使用您自己的具有公共接口的类来包装来自各种外部服务的响应来做到这一点。您还包装服务本身,因此当您调用服务包装器时,它们都会返回您包装的数据类。然后,您将对外部服务的所有引用隔离到一个包中。这也使得添加或删除服务变得容易。

于 2016-03-31T16:46:55.710 回答
0

要准确回答您的问题,需要了解您使用的语言和/或平台。埃里克在上面的回答中是正确的,将数据包装在你们自己的班级中是处理这个问题的一种方法。但是,根据语言的不同,最终实现的细节会有所不同,添加可能的返回值类型所需的工作量也会有所不同。例如,在 Java 中处理此问题的一种方法是返回异构容器。看看这个线程: 键入安全异构容器模式来存储项目列表

于 2016-03-31T18:34:26.880 回答