2010-10-17 4 views
0

Je développe une application Android.Boxe et UnBoxing sur Android

Je l'interface suivante:

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); 
} 

Pour chaque table définie sur enum Table, ce sera un objet qui représente cette table. Le problème concerne le paramètre Object item. Je devrai déballer chaque article chaque fois que j'appellerai une de ces méthodes et je ne sais pas si cela sera très lent pour Android.

Connaissez-vous une meilleure solution? Je ne veux pas créer un DBAdapter pour chaque table car je devrais partager l'objet SQLiteDatabase entre eux.

MISE À JOUR:

Voici un exemple d'objet que je dois passer à ces méthodes:

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

    public GameDescriptionData() { 
    } 
} 

Merci.

Répondre

3

Vous n'avez pas précisé le type de valeurs que vous mettez dans les tableaux. Sauf si vous insérez des valeurs primitives, il n'y aura pas de boxe impliqué. Par exemple, si item est une référence String, cela ne nécessite pas de boxe car c'est déjà une référence.

Je vous suggère d'essayer votre design idéal avant de le changer pour des raisons de performance. Certes, je ne suis pas entièrement convaincu que ce soit un bon design pour commencer, mais c'est difficile à dire sans en savoir plus sur votre application.

+0

Merci pour votre réponse. J'ai mis à jour ma question avec un exemple pour l'élément Objet. – VansFannel

+0

@VansFannel: Comme c'est une classe, il n'y aura pas de boxe. –

+0

Vous avez dit: "Certes, je ne suis pas entièrement convaincu que c'est un super design pour commencer, ..." Que suggérez-vous? – VansFannel

1

Je suggère le strategy pattern pour impliquer le soin distinct pour chaque article attendu.
Définissez DBAdapterStrategyFactory pour stocker toutes les stratégies en fonction de leur type de classe. De cette façon, lorsque vous appelez les opérations sur Object item, vous pouvez tirer cette stratégie de l'usine et partager la plupart du code IDBAdapter.