Вопрос

Я разрабатываю приложение для 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. Отказ Мне придется UNBOX каждый элемент каждый раз, когда я называю один из этих методов, и я не знаю, будет ли это очень медленно для Android.

Вы знаете лучшее решение? Я не хочу создавать DBAdapter для каждой таблицы, потому что я должен делиться объектом Sqlitedatabase между собой.

ОБНОВИТЬ:

Вот пример объекта, который мне нужно передать на эти методы:

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

    public GameDescriptionData() {
    }
}

Спасибо.

Это было полезно?

Решение

Вы не сказали, какие ценности вы надеваете в таблицы. Если вы не вставляете примитивные значения, не будет никаких вовлеченных в боксе. Например, если item это String Ссылка, которая не нуждается в боксе, потому что это уже ссылка.

Я предлагаю вам попробовать свой идеальный дизайн, прежде чем изменить его ради работоспособности. По общему признанию, я не совсем убежден, что это отличный дизайн, чтобы начать, но трудно сказать, не зная больше о вашем приложении.

Другие советы

Я бы предложил Стратегическая структура в некоторую отдельную помощь для каждого ожидаемого предмета.
Определять DBAdapterStrategyFactory Это будет хранить все стратегии вместе на основе типа своего класса. Таким образом, при вызове операций на Object item Вы можете тянуть эту стратегию с завода и поделиться большинством IDBAdapter код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top