사실 객체지향 설계를 처음 접하기 이전부터MVC모델에 대한 개념적인 지식은 한번쯤 접해 보았을 것입니다.가장 기본적인 정의를 설명하자면M( Mode )은Application의Business Logic ,즉,객체 또는 데이터의 가공을 책임지는 컴포넌트들의 집합체이고C ( Control )이란 객체 또는 데이터의 흐름을 책임지는 컴포넌트, V( View )는 객체 또는 데이터의 생성을 책임지는 컴포넌트로써 일반적으로Data의 입력 부분과 출력 부분을 담당합니다.
하지만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
객체 또는 데이터의 흐름을 책임지는Controller는 활성화 된View로부터 넘겨 받은 메시지(User Action)또는 객체를 파악하여 해당 객체를 어떤Model로 전달할지를 결정하고 필요한 객체를 데이터를 가공할Model로 전달합니다. 기본MVC모델에서는Model에서Controller쪽으로Event를 보낼 수 없도록 되어 있지만 구현참조가 아니라 인터페이스 참조일경우 Model에서 Controller쪽으로 Event를 보낸는것이 오히려MVC모델 흐름을 더욱 유연하게 만들기도 합니다.
Model
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에 관계 적용하기
이번 프로젝트의 Server파트에 적용한 MVC Architecture를 보자면........ << 이미지 클릭 시 크게 볼수 있습니다 >>
3.결론
M. V. C모델의 궁극적인 목적은 각각의 컴포넌트에 대해 역할을 서로 독립적으로 부여하고 또한 각각의 컴포넌트의 관계는 구연 참조가 아니라 인터페이스 참조로 설계하여 차후 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대처하고자 하는 목적이며 이는 객체 지향 설계방법의 기본적인 목적이기도 합니다.
최근댓글