2012-04-16 10 views
1

私は実際にアクティブなレコードのアイデアが好きで、次のデザインを実装しようとしています。 すべての具体的なモデルは、基本的なCRUD操作を持つ抽象モデルに拡張されています。ここでORMLiteを使用したActiveRecord

は、モデル上のセーブ機能のサンプルです:あなたは私がModel.classを持って見ることができるように

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

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

、ここではgetDaoは()です。 getDao関数にClassを渡す以外は、次のデザインを実装するための他のオプションやパターンはありますか?

答えて

3

はその後getDaoメソッド静的としないでください:

result = dbHelper.getDao(getClass()); 

編集:その場合は

、あなたが何らかの形で取得するにはどのようなDAO getDao方法を指示する必要があります。

private static <T> Dao getDao(Context context, T object){ 
    try { 
     return new DatabaseHelper(context).getDao(object.getClass()); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 
+0

静的でない場合は、getAll関数(静的)では使用できません。 – user1284151

+0

さて、私はいくつかの他の変更をしましょう:) – Cristian

関連する問題