2009-07-30 4 views
5

저는 기본 C++ 구현에서 모델이 어떻게 작동해야하는지에 대해 다소 혼란 스럽습니다. 또는 오히려 데이터베이스가 백엔드를 캡슐화/작업해야한다고 말하는 것에서 다소 혼란 스럽습니다.C++ MVC 모델 - 어떻게 구현해야합니까?

현재 내 생각은 정적 findById() 메소드가있는 모델을위한 것입니다.이 메소드는 동일한 모델의 인스턴스를 반환하며, 이는 데이터의 단일 '행'을 나타냅니다 (조작 등 허용) 적절한 접근 방식 일 수 있습니다.

데이터베이스에서 새 행을 만드는 경우 모델의 새 인스턴스가 만들어지고 데이터로 채워지고 효율적으로 save() 메서드가 호출된다고 가정합니다.

바라건대 내가 올바른 길을 가고 있지만 구현/디자인에 약간 혼란스러워합니다.

모든 조언을 주시면 감사하겠습니다. 사전에

감사합니다, 제임스

+1

어쨌든 당신은 무엇에 관해 이야기하고 있습니까? – User

+0

나는 당신의 문제가 무엇인지 이해할 수 없다는 것을 지금 두려워합니다. C++과 함께 사용하는 일종의 MVC 프레임 워크를 설계하고있는 것 같습니다. 그러나 당신이 현재하고있는 일이 무엇인지 정확히 알기는 어렵습니다. 그걸 좀 자세히 설명해 주시겠습니까? – User

+0

흠. MVC의 원리를 이해하고, 모델이 달성해야하는 것은 무엇인가? 모델에 어떤 인터페이스가 있어야하는지에 대한 질문이 더 많습니다. 즉, 정적 메서드를 통해 데이터를 쿼리해야하고 모델의 인스턴스가 데이터의 단일 '행'을 나타내야합니까? 바라건대 그것은 약간의 설명을 제공합니다 ^^; ... –

답변

4

그래서 저는 특히 C++로 작성된 MVC 응용 프로그램의 컨텍스트에서 관계형 데이터베이스와 객체 지향 응용 프로그램 사이를 "변환"하는 데 적합한 인터페이스가 무엇인지 질문하고 있다고 생각합니다.

일반적인 접근 방식을 객체 - 관계형 매핑 또는 ORM이라고합니다. 나는 레일에 루비 ORM을 구현하는 방법 만 알고 있어요,하지만 당신은 C로 이월하는 경우 ++는 다음과 같습니다 : 이러한 쿼리와 같은

  • 작업 테이블에 클래스에

    • 데이터베이스 테이블 매핑 ()에 대응하는 클래스의 멤버 변수에 해당하는 테이블에서
    • 행이 해당 클래스 표의
    • 필드의 인스턴스에 대응하는 대응하는 클래스의 멤버 함수 정적 매핑

    THER e는 아마도 ORM 매핑을 수행하는 C++ 라이브러리 일 것입니다. 나는 C++에서 이런 일을 한 적이 없기 때문에 나 자신에 익숙하지 않다.

    편집 : This 질문 : C++ 용 ORM 라이브러리에 대해 묻습니다.

  • 1

    첫 번째 조언 : 책은 "네 명"- 감마 등으로 디자인 패턴. 그것은 MVC와 다른 필요한 패턴 인 observer에 대해 설명합니다.

    위키 백과도 도움이 될 수 있습니다.

    기본적으로 모델은 데이터를 나타내며 모델을 조작 할 수 있습니다. 그것은 수업입니다. 모델은 뷰 또는 컨트롤러를 알지 못한다. 그것을 알지 못하면 다른 사람들에게 알릴 수있는 가능성이 있어야합니다 (예를 들어, 관찰자 ​​패턴, qt의 신호). 보기는 데이터를 표시하고 변경 사항에 반응합니다. 그것은 모델에 대해 관찰자로 등록하고 대부분의 경우 모델을 알고 있습니다 (거기에서 디커플링 할 필요는 없습니다). 여러보기에서 동일한 모델을 사용할 수 있습니다. 컨트롤러와 동일합니다. 대부분의 최신 UI에서보기와 컨트롤러는 밀접하게 결합되어 있으며 때로는 같은 개체 (예 : 값을 표시하고 동시에 이동하여 슬라이더를 변경하는 슬라이더)입니다.

    역사적인 이유로 : lern 스몰 토크 (예 : Cincom Smalltalk).

    관련 문제