1

私はアクティブレコードのアイデアが本当に好きで、次の設計を実装する予定です。すべての具象モデルは、基本的なCRUD操作を持つ抽象モデルを拡張します。

モデルのサンプル保存機能は次のとおりです。

public void save(){
    try {
        getDao().createOrUpdate(this);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

そしてここにgetDao()があります:

private static Dao<Model, Integer> getDao(Context context){
    Dao<Model, Integer> result = null;

    DatabaseHelper dbHelper = new DatabaseHelper(context);
    try {
        result = dbHelper.getDao(Model.class);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       

    return result;
}

ご覧のとおり、Model.classがあります。クラスをgetDao関数に渡すことを除いて、次の設計を実装するための他のオプションまたはパターンはありますか?

4

1 に答える 1

3

getDaoメソッドを静的にしないでください。

result = dbHelper.getDao(getClass());

編集:

その場合、どういうわけかgetDaoメソッドにどのdaoを取得するかを指示する必要があります。次のようなものを使用できます。

private static <T> Dao getDao(Context context, T object){
    try {
        return new DatabaseHelper(context).getDao(object.getClass());
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}
于 2012-04-16T17:17:43.070 に答える