我想对一堆不同的API服务进行API调用。我有一个名为ApiService
的抽象类,它包含每个子类的公共方法。每个新API都必须继承并实现这些方法。
我的问题是:我如何浏览ApiService
的所有子类并调用他们的方法?
现在,我已经实例化了所有服务的静态数组(这意味着必须手动将新服务添加到数组中),如下所示:
ApiService[] services = {new SubService1(), new SubService2(), ...};
我想知道是否有更好的方法可以做到这一点。
答案 0 :(得分:1)
您想要在抽象类的每个子类实例上调用一个方法。无论如何都没有自动查找类的所有实例的方法,因此您需要自己管理所有实例的列表。
您必须执行以下操作之一:
ApiService
的构造函数中的静态列表,使其更加自动化。但它让基类知道它的实例列表,在我看来有点代码味道。当您事先知道应用程序中的实例数时,还有另一种选择:使用Enum而不是抽象类。每个Enum值都是类的一个实例,它可以实现接口和方法,每个实例都可以以不同方式覆盖方法。