我正在开发一个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() {
}
}
感谢。
答案 0 :(得分:3)
你还没有说过你在表格中加入了什么样的价值观。除非您插入原始值,否则不会涉及任何装箱。例如,如果item
是String
引用,则不需要装箱,因为它已经是引用。
我建议您在更改之前尝试理想的设计,以避免性能问题。不可否认,我并不完全相信这是一个很好的设计,但如果不了解更多有关您的应用程序的话,很难说。
答案 1 :(得分:1)
我建议strategy pattern为每个预期的项目提供明确的关注。
定义DBAdapterStrategyFactory
,根据类的类型将所有策略存储在一起。这样,在Object item
上调用操作时,您可以从工厂中提取该策略并共享大部分IDBAdapter
代码。