2013-07-05 26 views
3

我想對一堆不同的API服務進行API調用。我有一個叫做ApiService的抽象類,它包含每個子類的常用方法。每個新的API都必須繼承並實現這些方法。從抽象類的所有子類中調用方法的最佳方法是什麼?

我的問題是:我如何通過ApiService的所有子類並調用它們的方法?

現在,我已經(這意味着新的服務必須手動添加到陣列)實例化的所有服務的靜態數組看起來是這樣的:

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

我想知道是否有這是一個更好的方法。

+1

我覺得這個鏈接會很有用。請檢查它。 [問題] [1] [1]:http://stackoverflow.com/questions/492184/how-do-you-find-all-subclasses-of-a-given-類中的Java – zari

回答

1

你想調用抽象類的每個子類的每個實例的方法。無論如何,沒有自動的方式來查找類的所有實例,所以你需要自己管理所有實例的列表。

你要做下列之一:

  • 手動管理列表,也就是實例添加到列表中,當你創建它們
  • 做出更多的自動化,通過添加例如靜態列表中的基類ApiService的構造函數。但它使基類知道它的實例列表,並且在我看來有點代碼味道。

還有另一種方法,當您事先知道應用程序中的實例數時:使用Enum而不是抽象類。每個Enum值都是該類的一個實例,並且它可以實現接口和方法,並且每個實例都可以以不同方式覆蓋方法。

相關問題