활동이 sqlite 데이터베이스에 직접 액세스해야 합니까, 아니면 중재자 클래스가 있어야 합니까?

StackOverflow https://stackoverflow.com//questions/9674929

문제

SQLiteOpenHelper를 하위 클래스로 분류하고 사용할 수 있는 코드의 모든 구성 요소를 준비했습니다.문제는 모든 활동이 기본 데이터베이스 클래스의 공용 메소드에 직접 액세스할 수 있도록 허용하는 것이 정말 좋은 디자인인지 여부입니다.

내 활동이 데이터베이스에서 얻은 정보를 기반으로 레이아웃에 정보를 채우는 상황이 있습니다. 기본적으로 런타임에 동적으로 생성됩니다.데이터베이스에서 여러 행이 반환될 것이기 때문에 이는 모든 정보를 얻는 데 필요한 모든 배열을 갖게 된다는 것을 의미합니다.

그래서 다음과 같습니다.

 //in Main Activity Class
 private class menuItems{

    String category_name;
    int category_id;
    int menuItem_id;
    String menu_title;
    String menu_desc;
    String price;
    int icon;
}

  //ArrayList in Main Activity
   ArrayList<menuItems> menu = new ArrayList<menuItems>();

내 활동에는 이 "구조체"가 필요합니다. 데이터베이스에서 정보를 수신할 수 있도록 getAllMenuItems()와 같은 것입니다. - 이 메소드는 select 문을 수행하고 정보를 모아 자체 "구조체"로 반환합니다. 주요 활동으로 돌아갑니다.그런 다음 활동 내에서 이 정보를 사용하여 레이아웃/뷰 등을 만듭니다.

데이터베이스와 통신하기 위해 중재자 클래스가 있게 된다면 해당 클래스에도 동일한 "구조체"가 정의되어 있어야 합니다.다음과 같은 것을 갖는 것이 더 나은 디자인일까요?

주요 활동

DatabaseAccessor - 공용 DatabaseHelper 클래스 호출(MainActivity의 요청에 따라)

DatabaseHelper(SQLIteOPenHelper 하위 클래스, 모든 데이터베이스 쿼리 수행)

나는 MVC(Model-View-Controller) 라인을 따라 뭔가를 디자인하고 싶지만 안드로이드 애플리케이션에서 이것이 실용성에 대해 어떻게 생각하는지 궁금합니다.

감사해요!

도움이 되었습니까?

해결책

일반적으로 액티비티와 데이터베이스를 가능한 한 서로 분리하는 것이 좋습니다.이를 통해 데이터를 표시하는 데 사용하는 코드를 변경할 필요 없이 액세스할 클래스를 생성하여 데이터 소스를 변경할 수 있습니다.

그렇습니다. 데이터에 액세스하기 위한 별도의 클래스와 데이터를 활동에 전달할 수 있는 별도의 클래스가 있어야 합니다.또한 이 경우에는 디미터 법칙을 따르고 실제로 기본 데이터베이스에 대한 액세스를 제공하지 않고도 기본 데이터에 액세스하거나 변경하는 데 필요한 모든 기능을 제공합니다.

다른 팁

결론적으로 - 다른 활동에서 db 클래스를 다시 사용하려는 경우 GUI와 별도로 데이터베이스를 갖는 것이 현명한 조치라고 생각하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top