디자인 패턴
디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것
중복 코드 방지, 의존성 제거, 유지 보수 개선 등 코드의 더 좋은 구조를 만드는 것을 도와주는 코드 작성방법입니다.
MVC 패턴
MVC 패턴(Model-View-Controller Pattern)이란 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴입니다.
Model
애플리케이션의 데이터, 비즈니스 로직입니다. 내부저장소의 데이터일 수도 있고 API를 통해 데이터를 받아오는 로직일 수도 있죠.
View
이름을 통해서도 아시겠지만 눈으로 보이는 영역입니다.
Controller
model과 하나 이상의 view를 잇는 다리 역할을 하며 이벤트 등 메인 로직을 담당합니다.
즉 이름과 마찬가지로 데이터의 요청, 수정, 추가 등을 제어(controll)합니다.
정리
MVC 패턴에 대해 공부를 하면서 사람마다 내용이 조금씩 다른 것을 느꼈습니다. controller를 통해 view를 업데이트한다는 내용과 view가 Model을 직접 관찰하면서 업데이트한다는 내용이 있습니다. 둘 다 틀린 내용은 아니고 controller를 통해 view를 업데이트 하는 방법은 view와 model이 완전히 분리된 mvp 패턴의 장점을 가져온 mvc 패턴인 것 같습니다.
mvp 패턴과는 controller와 달리 present는 1개의 view를 담당한다는 차이점이 있습니다.
제가 정리한 내용을 그림으로 표현하자면 위와 같습니다.
View가 Model의 Data의 상태를 관찰하고 Data가 변경될 때 View가 업데이트 될 수도 있고 Controller를 통해 업데이트 될 수도 있습니다.
중요한 것은 Model은 독립적이어야 합니다. Model은 View와 Controller를 모른채로 Controller와 View는 Model에서 제공해주는 메소드를 통해 Data를 갱신합니다.
장점
- 각 컴포넌트(Model, View, Controller)들이 명확하게 역할이 나누어져 있어 관리가 용이합니다.
- 확장성, 유지보수성 등이 패턴을 사용하지 않은 것보다 좋아집니다.
- 구현하기가 비교적 단순합니다.
단점
- 프로젝트가 커질수록 Controller가 비대해져 유지보수가 어려워 집니다.
- Controller 하나가 여러개의 View를 담당할 수 있어 각 View별로 테스트 하기가 어렵습니다.
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.