Бокс и UnBoxing на Android
Я разрабатываю приложение для 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() {
}
}
Благодарю.
2 ответа
Вы не сказали, какие значения вы помещаете в таблицы. Если вы не вставляете примитивные значения, бокс не будет задействован. Например, если item
это String
ссылка, которая не нуждается в боксе, потому что это уже ссылка.
Я предлагаю вам попробовать свой идеальный дизайн, прежде чем менять его из соображений производительности. По общему признанию, я не совсем уверен, что это отличный дизайн для начала, но трудно сказать, не зная больше о вашем приложении.
Я бы предложил шаблон стратегии, который бы подразумевал особую заботу о каждом ожидаемом предмете.
определять DBAdapterStrategyFactory
это будет хранить все стратегии вместе на основе их типа класса. Таким образом, при вызове операций на Object item
Вы можете получить эту стратегию с завода и поделиться большей частью IDBAdapter
код.