2013-02-07 39 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

考虑​​,你可以用它来抽象为具体用户类的创建作为数据源的功能。

使用户成为一个接口,并为每种类型的数据源拥有一个数据源特定的用户实现。