我正在开发一个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() {
}
}谢谢。
发布于 2010-10-17 07:55:34
你还没说你要把什么样的值放进表格里。除非插入原始值,否则不会涉及任何装箱。例如,如果item是String引用,那就不需要装箱,因为它已经是引用了。
为了性能考虑,我建议你在改变它之前先尝试一下你的理想设计。诚然,我并不完全相信这是一个伟大的设计开始,但很难说不知道你的应用程序更多。
发布于 2010-10-17 07:55:56
我建议战略模式为每一项预期的项目提供不同的照顾。
定义将根据类类型将所有策略存储在一起的DBAdapterStrategyFactory。这样,在调用Object item上的操作时,您可以从工厂中提取该策略并共享大部分IDBAdapter代码。
https://stackoverflow.com/questions/3952428
复制相似问题