0

我正在开发一个 Android 应用程序。

我有以下界面:

public interface IDBAdapter {

    public enum Table {
        ...
    }
    public int insertItem(Table table, Object item);
    public boolean removeItem(Table table, long rowIndex);
    public Cursor getAllItemsCursor(Table table);
    public Cursor setCursorToItem(Table table, long rowIndex);
    public void getItem(Table table, long rowIndex);
    public boolean updateItem(Table table, long rowIndex, Object item);
}

对于在 上定义的每个表enum Table,它将是一个表示该表的对象。

我的问题是关于参数Object item。每次调用其中一种方法时,我都必须对每个项目进行拆箱,而且我不知道这对于 Android 是否会非常慢。

你知道更好的解决方案吗?我不想为每个表创建一个 DBAdapter,因为我应该在彼此之间共享 SQLiteDatabase 对象。

更新:

这是我需要传递给这些方法的对象示例:

public class GameDescriptionData {
    public int gameId;
    public char[] language = new char[5];
    public String name;
    public String description;

    public GameDescriptionData() {
    }
}

谢谢。

4

2 回答 2

3

你还没有说你在表格中输入了什么样的值。除非您插入原始值,否则不会涉及任何装箱。例如,如果itemString参考,则不需要装箱,因为它已经是参考。

出于性能考虑,我建议您在更改之前尝试您的理想设计。诚然,我并不完全相信这是一个很棒的设计,但如果不了解您的应用程序,就很难说。

于 2010-10-17T07:55:34.720 回答
1

我建议采用策略模式来实现对每个预期项目的不同关注。
定义DBAdapterStrategyFactory将根据它们的类类型将所有策略存储在一起。这样,在调用操作时,Object item您可以从工厂中提取该策略并共享大部分IDBAdapter代码。

于 2010-10-17T07:55:56.957 回答