2012-04-16 3 views
1

저는 활성 레코드에 대한 아이디어를 좋아하고 다음 디자인을 구현하려고합니다 : 모든 구체적인 모델은 기본 CRUD 작업이있는 추상 모델을 확장합니다. 여기 ORMLite를 사용한 ActiveRecord

모델에 절전 기능 샘플입니다 : getDao

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

하고 여기에() :

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 함수에 전달하는 것을 제외하고는 다음과 같은 디자인을 구현할 수있는 다른 옵션이나 패턴이 있습니까?

답변

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

관련 문제