출처:http://blog.naver.com/PostView.nhn?blogId=whiteday910&logNo=40162828835
위 그림은 MVC하면 매번 나오는 그림이에요. 이 그림은 이미 여러분들이 어렴풋이 많이 보았기 때문에 머릿속에 있을 것이므로 별로 중요하지 않아요 이걸 가지고 처음부터 이해 하려고 하면 어렵기도 하구요.
여러분들이 개발자로서 혹은 개발에 입문하려는 사람으로서 MVC라는 말을 들어 보았을 거에요. 저도 맨 처음 MVC기반 프로그램을 개발 할 때 들어보고 이게 뭔가 싶었어요.
MVC 모델은 윈도 MFC프로그래밍 할 때도 쓰이고, 제가 하고 있는 SAP Webdynpro 할 때도 쓰이고, OpenUi 5할 때도 쓰이고 스프링 개발 할 때도 쓰이고 안드로이드 어플 만들때도 쓰이는 등 쓰임새가 많아요.
구구단은 한번만 익혀 놓으면 평생 두고두고 써먹듯이 이것도 여러분들이 60세까지 개발자의 수명이 다 하는 동안 사용할 것이니 조금 복잡해도 한번 읽어는 보는게 도움이 많이 될 것이라고 봐요.
출처:http://www.pnp-software.com/eodisp/documentation/developerManuals/guiArchitecture.html
MVC패턴위 맨 처음 나왔던 그림 처럼 설명 해놓은 곳이 많은데 요기 바로 위에 그림이 나름 더 직관적인 흐름이에요.
MVC라고 하지 말고 CVM 이렇게 쓰는게 더 낫지 않았을까 싶기도 합니다.
이 그림에서 Event는 여러분들이 인터넷에서 버튼을 '클릭'하거나 핸드폰에서 특정 버튼을 '터치'하는 등의 이벤트라고 할 수 있어요.
이러한 동작을 '명령'혹은 '실행'이라고 볼 수 있는데 이를테면 '인터넷뱅킹'어플에서 '조회'버튼을 눌렀다고 가정해볼게요.
'조회'버튼을 누르는 순간 MVC모델의 C에 해당하는 Controller가 어떤 데이터를 가지고 올 지 개발자가 지정해준 로직에 따라 결정 한 후, 어떤 화면(View)에 현재 가지고온 데이터를 뿌려줄 것인지를 결정해서 출력해주는 것이에요.
View는 UI를 선언하고 그리는 것을 담당합니다.
Model은 Application Data를 담당하고
Controller는 View의 event와 사용자가 입력한 입력을 처리합니다.
웹 개발로 치자면 gmail 처럼 첫 페이지 로딩이 끝난 시점에서 모든 데이터 모델이 메모리에 로딩 되어 있고 일부는 모델의 데이터까지도 메모리로 로딩 된 상태입니다.
페이지 이동이 발생하면 메모리에 올라와 있던 모델과 view가 매핑되서 화면에 출력되는 방식입니다.
프로그램 규모가 조금만 커져도 생짜로 개발하는 것(데이터 가져오기, 처리하기, 출력하기가 하나의 메소드 안에 들어 있는 모든 코드)은 그 복잡도가 기하급수적으로 증가하기 때문에 이렇게 부분부분 나누는 것이 좋습니다.
MVC패턴을 잘 익혀 놓으면 프로그램을 빠르게 에러가 덜 나게 만들 수 있는 하나의 수단이 됩니다.
END.
'SE' 카테고리의 다른 글
프로세스 모델 (0) | 2014.10.17 |
---|---|
EA(Enterprise Architecture) (0) | 2014.10.17 |
SOA(Service Oriented Architecture) (0) | 2014.10.17 |
SAA(Systems Application Architecture) (0) | 2014.10.17 |
퍼트차트(activity network), 간트차트(bar chart) (0) | 2014.10.17 |