티스토리 뷰

Spring

MVC 모델은 '피자'다.

KyeongRok Kim 2014. 3. 27. 00:57


MVC 모델은 '피자'다




안녕 여러분? 요즘 내가 프로젝 들어와있는데 드디어 내가 하고 싶었던 스프링 + JCo 프로젝트야.


스프링 프레임웍을 쓰는데 '스프링 웹 MVC 모델'을 쓰거덩...



어디를 뒤져 봐도 MVC에 대한 설명이 명쾌한 데가 없어. 맨날 네모 세개를 삼각형처럼 배열 해놓고 MVC라고는 하는데 정작 이걸 이해하고 있는 사람은 별로 없는 것 같아.






결론부터 이야기 하자면 MVC모델은 '피자'라고 생각하면돼.


MVC = 피자


이거야.





M이 Model이잖아? M은 '토핑'이야. 피자의 맛 이를테면 하와이안인지 페페로니인지 불고기인지 결정하는건 '토핑'이야. MVC가 최종적으로 사용자에게 보여지는건 Model이 결정하는거지. 모델이 뭐냐면 쉽게 말하면 데이터야.


더 적나라한 예를 들어보자면 '패티'의 예를 들어 볼 수 있어. 내가 맥도날드 햄버거를 좋아하는데 햄버거가 무슨 버거인지 정하는 것은 '패티'야. 새우 갈아서 튀긴게 들어가면 새우버거고 불고기 양념에 담갔던 애가 들어가면 불고기 버거가 되는거야.


알긋지?




그리고 View는 피자로 따지면 뭐겠어? 당근 '도우(빵)'겠지? 도우가 뭔지는 알지? 치즈크러스터, 리치골드, 보통 뭐 이런걸 결정하는게 '도우'잖아? 일종에 '틀'인거지. 



도우가 피자가 어떤 피자인지(페페로니, 치즈, 고르곤졸라)를 결정하지는 않지만 토핑이 올라가는 빵 역할을 하는거야.



마지막으로 C는 뭐겠어 Controller겠지? Controller는 피자를 만드는 미스터피자 알바생이라고 할 수 있어. 만드는 애야. 배달이랑 전화받는 알바생이랑은 구분 하기를 바래.



너네(고객, 유저)가 도미노피자에 전화를 한다고 생각해봐. 그러면 전화 받은 알바생이 피자는 무슨 피자고, 도우는 뭘 고를 꺼고 이런거 물어볼꺼아냐? 그러면 전화받는 알바생이 피자 만드는 알바생한테 '포테이토 피자에 치즈크러스터' 이렇게 주문을 넣어주겠지. 그러면 Controller역할을 하는 피자 만드는 알바생이 피자로 만들어 주는거야.


고르곤졸라 피자인데 도우는 치즈크러스터로 할 수도 있고

포테이토 피자인데 도우는 고구마 무스로 할 수도 있고


뭐 그런거 아니겠어?


프로그램한테도 마찬가지야. 니네가 1 + 2한 결과를 web으로 보고 싶을 수도 있고, 안드로이드 앱으로 보고 싶을 수도 있고, 아이폰 앱으로도 보고 싶을 수 있단 말이지.


그런데 어차피 1 + 2를 하는 기능은 3번 만들 필요가 없어. 똑같은 것 가지고 뿌려주는데만 다르게 뿌려주면 된다 이기야.



근데 위에서 '전화를 받는 알바생'을 잠깐 언급 했는데 '전화를 받는 알바생'은 Dispatcher에 해당한다고 볼 수 있어.


사용자로부터 요청이 들어오면 Controller한테 너네가 요청한 '고르곤 졸라 피자에 고구마 무스'를 피자 만드는 알바생한테 전달해주는 역할을 하는 애지.




물론 디스패쳐라는 녀석은 사용자의 요청을 전달 해줄 뿐만 아니라 Controller가 만들어준 피자를 오토바이 타고 배달까지 해주는 '피자 배달 알바생'역할도 해.


그러면 너네가 최종적으로 받는 결과물은 Controller가 조합을 해준 MV가 되겠지.



이걸 MVC모델 이라고 해.



너네가 프로젝을 들어가서 갑자기 MVC할 일이 생겨도 당황하지 말고 MVC는 까짓거 피자 주문 하는 것과 비슷한 프로세스라고 생각하면 되.


그럼 이만 마칠게~~



























공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함