3

我想对一堆不同的 API 服务进行 API 调用。我有一个名为的抽象类ApiService,其中包含每个子类的常用方法。每个新的 API 都必须继承和实现这些方法。

我的问题是:我怎样才能遍历所有子类ApiService并调用它们的方法?

现在,我有一个已经实例化的所有服务的静态数组(这意味着必须手动将新服务添加到数组中),看起来像这样:

ApiService[] services = {new SubService1(), new SubService2(), ...};

我想知道是否有更好的方法来做到这一点。

4

1 回答 1

1

您想在抽象类的子类的每个实例上调用一个方法。无论如何,没有自动方法可以找到类的所有实例,因此您需要自己管理所有实例的列表。

您必须执行以下操作之一:

  • 手动管理列表,即在创建实例时将实例添加到列表中
  • 通过将实例添加到基类的构造函数中的静态列表中,使其更加自动化ApiService。但它使基类知道它的实例列表,在我看来有点代码味道。

当您提前知道应用程序中的实例数量时,还有另一种选择:使用 Enum 而不是抽象类。每个 Enum 值都是该类的一个实例,它可以实现接口和方法,每个实例可以不同地覆盖一个方法。

于 2013-07-05T14:57:32.453 回答