2013-10-28 30 views
0

我將不同類型的對象作爲參數接收到不同的服務API中。 實施例的API:將對象從ClassType轉換爲String並將其取回的設計

void API1(Object1 obj1); 
void API2(Object2 obj2); 

在接收到的API,我轉換對象JSON類型並存儲在指定的位置。另一個輪詢者查詢存儲的位置,並嘗試使用Gson將其轉換爲對象類型。

我可以想到的一種方法是創建一個RequestWrapper,其中包含所有類型的對象(例如Object1,Object2等),並在存儲數據時填充正確的變量。

在接收端,我們可以將對象轉換爲RequestWrapper對象並檢查填充的對象。正如你所看到的,這需要20多個變量的附加對象,其中大部分將爲空。此外,將多個if-else檢查轉換爲正確的類型。

以面向對象的方式實現此目標的最佳方式是什麼?

回答

0

在基本級別上,似乎有兩種方法可以獲取來自客戶端的序列化對象的數據類型。

  1. 讓客戶告訴你。
  2. 爲自己找出答案。

一對夫婦的方法,我能想到的讓客戶告訴你:

  1. 添加的API爲每個不同的數據類型。

    void API1(Foo obj1); 
    void API1(Bar obj2); 
    void API2(Foo obj1); 
    void API2(Bar obj2); 
    
  2. 要求客戶端以序列化的形式包含它。

    {"class":"myPackage.MyClass"} 
    

一對夫婦的方式我能想到的來弄明白自己:

  1. 預解析JSON字符串一些獨特的標識符(即反序列化之前確定型)。

    if (jsonString.contains("foo")) { 
        Foo foo = gsonInstance.fromJson(jsonString, Foo.class); 
    } 
    
  2. 上述包裝方法(即確定反序列化後的類型)。

我不知道任何方法都是特別面向對象的,但那麼面向對象是如何以序列化數據開始呢?

相關問題