2010-04-21 5 views
2

MVC 자체에 대한 아이디어는 나에게 분명하지만 여러 개념과 컨트롤러에 대한 개념이 어떻게 확장되는지 이해하는 데 어려움이 있습니다.MVC 클래스 조직은 여러보기 및 컨트롤러에서 어떤 모습입니까?

코코아는 모델과 뷰 사이의 '스위치 보드'인 컨트롤러의 접근 방식을 사용합니다. 다중 뷰의 경우 응용 프로그램을 구성하고 작동하는 방법은 무엇입니까? 모든 뷰와 연결된 컨트롤러가 있다면, 메인 애플리케이션은 그것이 생성하는 모든 컨트롤러를 추적해야하거나, 각 컨트롤러가 인스턴스를 생성하는 '중첩 된'컨트롤러를 가질 수 있습니까? 응용 프로그램은 창을 만들 것이고 창은 도구 모음을 만들 것입니까?

전체 애플리케이션이 동일한 모델로 작업해야하거나 모델을 더 작은 모델로 분해한다면 어떻게 될까요?

모듈 식 MVC 구조를 유지하면서 다중 창 /보기 응용 프로그램을 논리 블록으로 분할하는 방법을 묻는 것처럼 보입니다. 나는 WordPress 아이폰 앱뿐만 아니라 Adium에서 코드를 살펴 보았지만 두 코드 모두 잃어버린 상대적으로 큰 코드 기반을 가지고있는 것으로 보인다.

답변

2

일반적으로 컨트롤러는 계층 적으로 구현된다. 예를 들어, 표준 Cocoa Document 아키텍처에서는 NSDocument의 여러 인스턴스를 관리하는 NSDocumentController이 있습니다. NSDocument의 각 인스턴스는 NSWindowController의 인스턴스를 하나 이상 관리하며 NSWindowController의 각 인스턴스는 NSViewController의 인스턴스를 관리 할 수 ​​있습니다.

계층 구조를 아래로 이동하면 컨트롤러의 책임이보다 구체화되고 세분화됩니다. 모델 액세스와 관련하여 Cocoa에는 모델 자체에 대해 알 필요가없는 뷰없이 뷰를 그리는 데 사용할 수있는 대리자 및 데이터 소스 패턴과 같은 여러 패턴이 있습니다.

일반적으로 다른 모델 (예 : 앱에서 여러 유형의 문서를 수정해야하는 경우)이 아닌 경우 일반적으로 앱에 단일 통합 모델이 있습니다.

+0

야생에서이 좋은 사례가 있습니까? 저는 천천히 Adium에 익숙해졌지만 CoreData 및 다른 '데이터 지향적 인'애플리케이션에 더 관심이 있습니다. – dmkc

+1

Apple의 스케치 샘플 코드는 "표준"참조 앱입니다. http://developer.apple.com/mac/library/samplecode/Sketch-112/ –

+0

Perfect! 감사! – dmkc

관련 문제