하지만 MVC 모델을 설명한 대부분의 설명서를 보면 위와 같이 너무 기본적인 정의에만 초점을 두고 있어 초급 개발자들은 자신이 개발해야 할 프로그램에서 어는 부분을 M으로 V로 C로 나누어야 할지 개념을 잡기 힘들뿐만 아니라 설사 각각의 업무에 맞게 class를 만들었다 하더라도 각각의 컴포넌트( 또는 Class ) 사이의 관계를 어떻게 설계해야 할지 판단하기 힘든 상황이 발생하게 됩니다. 이런 어려움을 가지고 있는 초급 개발자에게 조금이나마 도움이 될까 하여 MVC모델에 대한 개괄적인 내용을 아래와 같이 설명하고자 합니다
1. M, V, C 전체 개념보기
2. M, V, C 나누기
3. M, V, C에 관계 적용하기
1. M, V, C 전체 개념보기

Model은 객체나 Data의 가공을 책임지는 컴포넌트
View는 객체나 Data의 생성, 입력( User Action ), 출력( Display )을 책임 지는 컴포넌트
Control은 객체나 Data의 흐름을 책임지는 컴포넌트View
먼저 데이터( 객체 )의 입력과 출력을 담당하는 View는 필요에 따라 Model로부터 객체의 상태를 요청할 수 있고 응답 받은 상태에 따라 다른 출력 형식을 가지 수 있으며 Controller에게 전달 시 상태정보를 같이 보낼 수 있습니다. 여기서 중요한 것은 Model로부터 응답 받은 객체의 상태에 의해 View가 직접 제어, 가공을 하는일이 없도록 해야 합니다. 다시 말하면 View는 상태에 따라 출력형식만 다르게 가야하고 모든 제어나 가공은 Controller에게 위임을 해야 합니다.

객체 또는 데이터의 흐름을 책임지는 Controller는 활성화 된 View로부터 넘겨 받은 메시지(User Action) 또는 객체를 파악하여 해당 객체를 어떤 Model로 전달할지를 결정하고 필요한 객체를 데이터를 가공할 Model로 전달합니다. 기본 MVC 모델에서는 Model에서 Controller쪽으로 Event를 보낼 수 없도록 되어 있지만 구현참조가 아니라 인터페이스 참조일경우 Model에서 Controller쪽으로 Event를 보낸는것이 오히려 MVC 모델 흐름을 더욱 유연하게 만들기도 합니다.

Model은 Controller로부터 전달받은 객체 또는 데이터를 Application의 Business Logic에 따라 가공, 처리하는 책임을 가지고 있으며 필요에 따라 View나 Controller에게 변경된 객체의 상태를 전달하게 됩니다.

1. M, V, C 나누기
간단한 예를 통한 MVC 도출
예 ) Database을 이용해서 고객정보를 읽고 쓰는Application
Cust_Dlg ( View ) : 고객 정보를 입력 또는 출력하는 GUI 관련 class
Cust_Ctrl (Controller ) : GUI로부터 입력 받은 고객 정보 데이터 또는 객체를 Model로 전달받는 Class
Cust_DB ( Model ) : Controller로부터 전달 받은 객체 또는 데이터를 DB에 입력 또는 조회하는Class

2. M, V, C에 관계 적용하기

3. 결론
M. V. C 모델의 궁극적인 목적은 각각의 컴포넌트에 대해 역할을 서로 독립적으로 부여하고 또한 각각의 컴포넌트의 관계는 구연 참조가 아니라 인터페이스 참조로 설계하여 차후 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대처하고자 하는 목적이며 이는 객체 지향 설계방법의 기본적인 목적이기도 합니다.