如何避免为不实现通用接口的相同库方法编写多个包装器?

时间:2015-04-22 01:37:57

标签: java oop amazon-web-services aws-sdk

我正在使用AWS SDK for Java,它包含大量包含常用方法的类,但常用方法不实现公共接口(或从公共基类扩展等)

例如,我必须经常写这个模式:

while(true) {
  InformationResult result = client.getInformation(new InformationRequest());
  CustomData data = result.getData(); 
  // do stuff
  if ! result.isTruncated() {
   break;
  }
}

我想只编写一次此模式,但是有许多CustomDataInformationResult类没有多态关系。

想法?我不想自己包装所有课程。

1 个答案:

答案 0 :(得分:0)

Java在这里对你非常无礼。为什么要原谅? Foo.bazBar.baz是两种没有任何共同点的方法。这些名字并不重要。您必须责怪图书馆创建者,他们可能使用其他语言的公共代码生成此源代码和其他AWS SDK语言的源代码。

亚马逊开发人员最初也可能会考虑像Javascript这样的目标语言,在这种情况下,通用名称就足以使客户端代码成为通用名称。 Java案例可能已被屠杀。

您的选择是:

  1. 维护自己的包装。
  2. 从较小的源生成自己的包装器,就像它们(可能)那样。
  3. 使用反射。这可以节省你,但我不是专家,所以我只能建议。
  4. 注意(1)在Java世界中很常见,所以如果你选择它,不要感到惊讶。

    我还建议在AWS论坛上发帖,看看是否有其他人已经解决了这个问题。可能有一些Java中间件已经写了一些可怜的灵魂。