2009-12-16 3 views
2

화면 탐색을 제어하는 ​​객체가 있습니다. 발표자는이 네비게이터 객체 NavigateTo (string screenName) 및 NavigateTo (string screenName, 객체 데이터)에서 두 가지 메소드 중 하나를 호출 할 수 있습니다. 이 후자의 메소드는 일부 컨텍스트 데이터가 네비게이터 객체에 전달되도록합니다.MVP - 모델 뷰 발표자

NavigateTo (string screenName, 객체 데이터)를 호출하여 호출 표현자를 데이터로 탐색기에 전달한 다음 탐색기 객체가이를 사용하여보기에서 데이터를 추출하는 것은 잘못된 접근 방법일까요? 모델.

이 문제에 대한 몇 가지 조언은 크게 감사하겠습니다.

답변

0

발표자를 NavigateTo에 전달하는 것이 좋습니다. 여러 발표자가있는 경우 NavigateTo에서 사용할 수있는 인터페이스를 작성하여 각 발표자가 해당 인터페이스를 구현하도록 할 수 있습니다. 그러나 단지 하나의 발표자를 사용하거나 이미 공통 인터페이스를 공유하고 있다면 이것은 필요하지 않습니다.

MVP 뒤에 숨어있는 한 가지 생각은 기본 UI 로직에 영향을주지 않고보기를 변경한다는 것입니다. 발표자를 전달해도 발표자가 사용하는보기를 변경할 수 있으므로이 MVP 목표에는 영향을 미치지 않습니다. 이제는 (보기 속성을 노출하여) 발표자를 통해 원시보기에 ​​직접 액세스 할 수있는 경우에는 좋지 않습니다. 당신이 원하는 것은 발표자가 NavigateTo에 필요한 정보를 노출시키는 방법입니다. 그런 식으로 볼 기회가 생기면 그 메소드 뒤에있는 코드를 구현할 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. 직접 액세스가 좋지 않다고 말합니다. 하지만보기 인터페이스를 사용하여보기의 속성에 액세스하는 경우 어떻게해야합니까? 여전히 부적절한 것으로 간주됩니까? – David

+0

아니요,보기를 변경하면 어떻게됩니까? 보기의 어떤 부분이 소프트웨어의 다른 부분에서 사용되고 있는지를 나타내는 것은 없습니다. 따라서 5 년 10 년 후 소프트웨어를 변경 한 다음 소프트웨어가 중단됩니다. 보기는 발표자가 직접 참조해야합니다. –

+0

다시 한번 감사드립니다. 나는 이것이 물체가 그 이웃과 만 협력해야한다는 규칙이라고 가정한다. – David

관련 문제