2012-04-15 2 views
1

위키에서 설명하는 일반적인 MVC 패턴에 대해 이야기하고 있습니다. 그 끔찍한 핑크색 그림이 나를 부순다. 나는 다른 사람들을 보았지만 간접적 인 관계를 가진 사람들은 항상 나를 혼란스럽게했다. http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controllerMVC 간접 협회

왜보기가 컨트롤러와 간접적으로 연관되어 있습니까?

뷰는 모델을 기반으로 - 연관이 직접 그 이유는

2 그러나 모델이 볼 수있는 간접적 인 연관성을 가지고 그 이유는 무엇입니까? 그것은 알 필요도없는 견해의 존재에 대해서도 알지 못합니까?

자바 서블릿과 스프링 MVC로 개발하고 비교적 새로운 개발자인데 마틴 파울러 (Martin Fowler)가 논의한 다른 언어로 거슬러 올라간다고 생각합니다. 왜냐하면 스프링 MVC를 사용하기 때문에 나는 컨트롤러를 이상한 간접 협회가없는 연결 링크로 항상 사용한다.

저는 불과 3 년 전에 프로그래밍을 시작 했으므로 언제나 올바른 일을하기위한 아이디어로 늘었습니다. 예를 들어 왜 모델이 정확히 어디에있는지를 MVC와 n 계층으로 결합하면 완전히 잘못되고 비효율적 인 비즈니스 로직을 과거 모델에 저장할 수 있습니까? - 매개 변수와 getter + setter 및 전체 MVC가있는 단순한 클래스 원래 의도했던대로 UI를 제공하거나 그렇지 않았습니까? 우리는 DAO와 서비스 레이어가 DAOS + 일부 로직을 캡슐화하고 있는데, 어떻게 모델과 관련이 있습니까?

전형적인 모델은 전통적인 '학생'또는 '자동차'클래스보다 더 복잡하지 않습니다. 일반적으로 데이터베이스의 테이블과 유사합니다 (현재 ORM을 사용하지 않습니다). 올바르게 사용합니까? DTO는 모델과 어떤 관련이 있습니까?

답변

1

1 왜보기가 컨트롤러와 간접적으로 연관되어 있습니까?

컨트롤러는 모델에 대한 행동 요청을 중재합니다. 이것은 요청이 하나의 객체에만 영향을주는 간단한 "변경 이름"보다는 모델 내에있는 여러 개의 공동 작업 객체를 변경하는 경향이 있기 때문입니다. 컨트롤러를 사용하면 Model에 대한 액세스가 분리되어 View를 사용하여 모델을 변경할 수 있습니다 (Model 객체 자체를 변경하는 View보다는).

뷰 객체 (예 : 클래스 버튼의 인스턴스)가 컨트롤러 객체를 직접 이해하지 못하기 때문에 간접적 인 연관이 있습니다. 나중에 연결을 적용해야합니다 (예 : onclick 콜백).

뷰가 모델을 기반으로 - 연관이

이 정확하지 않습니다 직접적인 이유 즉, 직접 협회 대표단 링크를 나타냅니다. 뷰는 모델 객체와 완전히 별개의 객체이므로 위임해야 할 수도 있습니다.

위임에는 대상 개체에 대한 이해가 필요하므로 직접 연관이 필요합니다. View 객체가 정보를 필요로 할 때, 정보 수집은 Model 객체에 위임되고 View로 반환되어 계속 진행됩니다.

2 왜 모델이보기와 간접적으로 연관되어 있습니까? 그것은 알 필요도없는 견해의 존재에 대해서도 알지 못합니까?

View 개체는 모델에서 정보를 "끌어 와야"할 수 있습니다.Model과 View 간의 간접 연관은 Model 객체가 변경 될 때 View 객체에 대한 콜백을 나타냅니다 (Observer Pattern 참조). 그러면 Model과 View 간의 연결이 "푸시 (push)"로 변경됩니다.