質問
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で非常に遅いかどうかはわかりません。
より良い解決策を知っていますか? sqlitedatabaseオブジェクトを互いに共有する必要があるため、各テーブルのdbadapterを作成したくありません。
アップデート:
これらの方法に渡す必要があるオブジェクトの例は次のとおりです。
public class GameDescriptionData {
public int gameId;
public char[] language = new char[5];
public String name;
public String description;
public GameDescriptionData() {
}
}
ありがとう。
解決
テーブルにどのような価値を置いているのかについては言わなかった。原始値を挿入しない限り、ボクシングは関係ありません。たとえば、if item
aです String
参照、それはすでに参照であるため、ボクシングは必要ありません。
パフォーマンスの懸念のために変更する前に、理想的なデザインを試すことをお勧めします。確かに、私はこれが最初から素晴らしいデザインであると完全に確信しているわけではありませんが、あなたのアプリケーションについてもっと知ることなく言うのは難しいです。
他のヒント
私は提案します 戦略パターン 予想される各アイテムの明確なケアを示唆するために。
定義 DBAdapterStrategyFactory
これにより、すべての戦略がクラスタイプに基づいて一緒に保存されます。このようにして、操作を呼び出すとき Object item
あなたはその戦略を工場から引き出して、ほとんどのものを共有することができます IDBAdapter
コード。