2

두 패턴 사이의 차이점에 대해 궁금합니다. 당신은 프리젠 테이션 모델 패턴에 동기화 코드가 필요하고 그 코드는 프리젠 테이션 모델 자체에 있어야한다고 생각할 때 패턴이 매우 유사하다고 생각합니다.프리젠 테이션 모델과 수동보기

두 모델 모두 프레젠테이션 모델/발표자에게 이벤트를 위임합니다. 프레젠테이션 모델 및 발표자는 도메인 모델을 명령하고 도메인 모델도 관찰합니다. (프레젠테이션 모델의 동기화 코드가 프레젠테이션 모델에 있기 때문에) 변경 사항이 발생할 때 모두 뷰와 동기화됩니다.

제 생각에는 차이점은 해당 프리젠 테이션 모델이 추상화 된보기라는 것입니다. 뷰의 상태와 동작을 설명합니다. 따라서 모든 뷰 상태 정보에 대한 속성을 갖습니다. 이 정보는 동기 코드를 통해 동기화됩니다. 수동보기에서는 발표자가보기의 추상 형식으로 표시되지 않습니다. 그래서 발표자는 뷰 상태를 나타내는 속성을 본질적으로 갖지 않습니다. 따라서 발표자는 상태 (컨트롤의 특성 및 발표자 자체)를 "동기화"하지 않습니다. 대신 도메인 데이터를 컨트롤에 "복사"(변경시)합니다. 차이점은 본질적으로보기의 추상화입니다. 즉, 프리젠 테이션 모델은 수동보기에서 제공되는 반면 발표자는 도메인 데이터에 대한 데이터 맵퍼로 간주됩니다.

지금까지 괜찮습니까? 아니면 중요한 것을 놓치고 있습니까?

감사와 안부 패트릭

답변

0

나의 이해는 수동보기 MVP의의 변형이라고하고 프리젠 테이션 모델은 별도의 패턴이다.

프레젠테이션 모델은 나중에 MVVM에서 ViewModel이라고하는 뷰의 추상 표현을 갖고 있습니다. MVP에는 뷰의 상태 표현이 없으므로 발표자는 뷰를 적절하게 호출합니다. 패시브 뷰는 뷰 호출이 일반적으로 모든 도메인 개념에 대해 불가지론 적이므로 크게 기본 유형을 의미합니다. 반면 감독자 변종은 해석 할 수있는 도메인 개념을보기에 전달할 수 있습니다.

내가 말했듯이, 이것은 단지 나의 이해 일뿐입니다. 나는 기쁘다.

+0

안녕하세요. David, 맞습니다. 분명히 별개의 패턴입니다. 하지만 일반적으로 나는 당신이 "수동 데이터 바인딩"을 가진 프리젠 테이션 모델을 여기의 예제처럼 프리젠 테이션 모델에 synchrinization 코드를 사용하면 매우 유사하다고 생각합니다 : http://martinfowler.com/eaaDev/PresentationModel.html 당신은 무엇을합니까? 생각한다? – offline

+0

데이터를 업데이트하는 '수동'접근 방식을 사용하면 데이터가 더 비슷하다는 점에 동의합니다. 그러나 여전히 중요한 차이점은 MVP가보기의 현재 상태를 나타내는 신중한 클래스/모델/개념이 없다는 것입니다. –

+0

헤이 데이비드, 나는 동의한다. 주요 차이점은 상태가 프리젠 테이션 모델에 있다는 것입니다. 그것은 시야의 추상입니다. 이것은 MVP의 경우가 아닙니다. 나머지는 구현 세부 사항 인 것 같습니다. MVC 부분의 마지막 부분 인 http://martinfowler.com/eaaDev/uiArchs.html에서이 프리젠 테이션 모델의 개념 때문에이 방향을 먼저 생각했다고 생각합니다. 여기에서 근본적인 차이점은 http://martinfowler.com/eaaDev/PresentationModel.html의 소개 에서처럼 명확하게 언급되지 않았습니다. – offline