0

我正在处理需要从不同数据源/格式创建对象的项目。我想知道组织源代码以使其变得容易的最佳方法是什么。

假设我有 User 类,我希望能够从数据库和 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() {

    }
}
4

2 回答 2

1

考虑工厂模式,您可以使用它将具体用户类的创建抽象为数据源的功能。

使 User 成为一个接口,并为每种类型的数据源提供一个特定于数据源的 User 实现。

于 2013-02-07T11:50:46.673 回答
1

创建包含来自 JSON 和数据库的所有属性/字段的类是个好主意吗?

我认为简短的回答是肯定的。您一定可以使用相同的对象来表示数据库中的数据并通过 JSON。

当您需要更改数据库中的数据表示但又不想更改 JSON API 时,您会遇到问题,反之亦然。然后,您将需要 2 个单独的类和它们之间的映射函数。

但是,如果您可以上一堂课,那是最好的方法。

于 2013-02-08T16:39:12.243 回答