2013-02-07 43 views
0

我正在從事需要從不同的數據源/格式創建對象的項目。我想知道組織源代碼以使其變得簡單的最佳方式。如何從不同的數據源/格式創建對象

比方說,我有類用戶,我想有能力從數據庫和JSON的數據創建對象。它的目的是讓我的應用程序的用戶在線和離線瀏覽數據。我正在使用GSON和ORMLite。另外JSON和數據庫中的字段可能不同,但「主」字段是相同的。創建包含來自JSON和數據庫的所有屬性/字段的類是一個好主意嗎?同樣的事情也低於類:

@DatabaseTable(tableName = "user", daoClass = UserDaoImpl.class) 
public class User { 

    public static final String ID_FIELD_NAME = "id"; 
    public static final String USER_LOGIN_FIELD_NAME = "login"; 
    public static final String USER_EMAIL_FIELD_NAME = "email"; 
    public static final String SERIALIZED_COUNTRY_FIELD_NAME = "user_county"; 

    // DB & JSON 
    @DatabaseField(generatedId = true, columnName = ID_FIELD_NAME) 
    int id; 

    // DB & JSON 
    @DatabaseField(columnName = USER_LOGIN_FIELD_NAME) 
    String login; 

    //DB & JSON 
    @DatabaseField(columnName = USER_EMAIL_FIELD_NAME) 
    String email; 

    //Only JSON 
    @SerializedName(SERIALIZED_COUNTRY_FIELD_NAME) 
    String country; 

    public Track() { 

    } 
} 
+0

你打算做什麼? – TheWhiteRabbit

+0

我正在創建移動應用程序,用戶可以在線瀏覽其他用戶以及何時將數據保存到數據庫。我希望能夠在用戶脫機或聯機時輕鬆切換數據源。如果在線 - 我從Web服務器獲取JSON並將其展示給用戶,如果離線 - 我將顯示來自數據庫的數據。 – Ziem

+0

瞭解,所以你期待? – TheWhiteRabbit

回答

1

創建包含來自JSON和數據庫的所有屬性/字段的類是一個好主意嗎?

我認爲簡短答案是肯定的。您可以確定使用相同的對象來表示數據庫中的數據並通過JSON。

當您遇到問題時,您需要更改數據庫中的數據表示,但不想更改JSON API或反之。然後你將需要2個獨立的類和它們之間的映射函數。

但是,如果你可以逃脫一節課,那麼這是最好的方法。

1

考慮​​,你可以用它來抽象爲具體用戶類的創建作爲數據源的功能。

使用戶成爲一個接口,併爲每種類型的數據源擁有一個數據源特定的用戶實現。