2009-06-08 5 views
1

응용 프로그램에 Model-View-Controller 패턴을 구현했습니다. 웹 애플리케이션이 아니지만 MVC가 적합합니다.모델보기 컨트롤러

이제 모델에 대한 모든 업데이트가 컨트롤러를 통해 라우트됩니다. 뷰의 업데이트도 컨트롤러로 보내고 모델로 라우트됩니다. (어플리케이션 모드에 따라 의사 결정을하기 위해 모델과 컨트롤러 사이에 상태 클래스가 있습니다.) 대부분의 패턴에서 모델을 직접 업데이트하는 것과 같은 시각을 보입니다. 이 패턴의 맥락에서 유효합니까? 당신이 바로 내 생각에 그 일을하고, 그래서

답변

2

이 뷰는 항상 컨트롤러를 통해 직접 모델에 액세스해서는 안됩니다.

3

뷰는 모델의 옵서버 일 수 있습니다.
모델은 옵저버 인터페이스를 통해 뷰에 액세스 할 수 있습니다. 모델이 변경되면 뷰 또는 컨트롤러에 알릴 수 있습니다. 모델을 뷰와 컨트롤러에서 분리하는 것은 Observer 패턴입니다.

Model-View-Controller

...

하나 컨트롤러 단독 모델을 조작 할 때 수동 모델이 사용된다. 컨트롤러 모델을 수정하고 그 모델이 변경되어 (도 2 참조)를 갱신해야한다는 관점 알린다. 이 시나리오의 모델은 뷰와 완전히 독립적으로 컨트롤러이며 컨트롤러이므로 모델의 상태가 변경된 것으로보고되지 않습니다.
... 모델이 컨트롤러의 개입없이 상태가 변경 될 때

가 활성 모델이 사용된다. 다른 소스가 변경 될 때 이 발생할 수 있습니다. 데이터가 변경되고 이보기에 반영되어야합니다. 증권 시세 표시를 고려하십시오. 당신은 외부 소스로부터 주식 데이터를 수신하고 의 의견을 업데이트 (예를 들어, 시세 밴드와 경고 창) 때 주식 데이터 변경하고자합니다. 발생할 때 모델 만이 내부 상태의 변화를 검출하기 때문에, 모델 디스플레이를 새로 뷰를 통지한다.
...

+0

주셔서 감사합니다. 필자의 경우 모델이 완전히 활성화되지 않았거나 수동이 아닙니다. 컨트롤러가 모델을 업데이트 할 때 모델이 업데이트되고 (의사 결정을 수행하는 상태 클래스를 통해) 뷰어가 모델에 의해 통지됩니다. 또한 모델은 구성 XML 파일에서 기본 매개 변수를 읽음으로써 시작 중에 업데이트됩니다. 이 경우 시청자에게도 알려지지 않습니다. 이것을 제외하고, 모든 나의 updatse는 컨트롤러를 통해 제어됩니다. – sarat

관련 문제