【问题标题】:How to create objects from different data sources/formats如何从不同的数据源/格式创建对象
【发布时间】:2013-02-07 11:21:48
【问题描述】:

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

假设我有 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() {

    }
}

【问题讨论】:

  • 你打算做什么?
  • 我正在创建移动应用程序,用户可以在其中在线浏览其他用户以及何时将数据保存到数据库。我希望能够在用户离线或在线时轻松地在数据源之间切换。如果在线 - 我从 Web 服务器获取 JSON 并将其显示给用户,如果离线 - 我显示来自数据库的数据。
  • 明白了,期待吗?

标签: java design-patterns gson ormlite


【解决方案1】:

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

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

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

但如果你能上一堂课,那就是最好的办法。

【讨论】:

    【解决方案2】:

    考虑factory pattern,您可以使用它来抽象具体用户类的创建作为数据源的函数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2023-01-25
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2012-04-06
      相关资源
      最近更新 更多