2015-04-22 19 views
1

我正在使用適用於Java的AWS開發工具包,其中包含大量包含常用方法的類,但常用方法未實現公共接口(或從公共基類等擴展而來)如何避免爲沒有實現通用接口的相同庫方法編寫多個包裝?

舉例來說,我必須非常頻繁寫模式:

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

我想只有一次寫這種模式,但現在有很多CustomDataInformationResult類沒有多態的關係。

想法?我不想自己包裝所有的課程。

+0

我完全不知道你正在試圖做什麼或者你如何試圖擴展它。你如何期望我回答這個問題? – djechlin

+0

我想抽象出這些類的常見訪問模式:有50?類似上面的原型,每個都有伴隨的* Request,* Result類訪問它們。我想幹代碼。 :-) –

+0

亞馬遜有幾十種語言的API,都可能從常見的源代碼中生成。 – djechlin

回答

0

在這裏,Java對你來說是非常無情的。爲什麼要寬容呢? Foo.bazBar.baz是沒有共同之處的兩種方法。名字並不重要。您必須責怪庫創建者,他們可能使用另一種語言的通用代碼生成了此SDK和其他AWS SDK語言的源代碼。

亞馬遜開發人員也有可能最初想到像Javascript這樣的目標語言,在這種情況下,通用名稱足以使客戶端代碼變得通用。 Java案件可能已被屠殺。

的選項有:

  1. 維護自己的包裝。
  2. 從更小的來源生成自己的包裝,就像他們(可能)做的一樣。
  3. 使用反射。這可以讓你在這裏節省,但我不是專家,所以我只能建議。

注意(1)在Java世界中令人遺憾地很常見,所以如果你喜歡它,不要感到驚訝。

我還建議張貼在AWS的論壇上看看是否有其他人解決了這個問題。可能有一些可憐的靈魂寫的Java中間件。

相關問題