MVC 패턴
MVC 패턴
은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴
이다.
MVC 패턴은 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있다.
MVC의 각 컴포넌트의 역할
[Model]
모델
은 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻한다.
예를 들어, 사각형 모양의 박스 안에 글자가 들어있다면 이 사각형 모양의 박스 위치 정보, 글자 내용, 글자 위치, 글자 포맷 등에 관한 정보를 모두 가지고 있어야 한다.
뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신한다.
[View]
뷰
는 UI 로직과 데이터를 시각적으로 표시하는 방법, 즉 웹 애플리케이션 또는 모바일 애플리케이션의 프론트에 사용된다.
다시 말해, 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻한다.
뷰는 컨트롤러부터 받은 정보를 기반으로 사용자에게 출력할 화면을 만드는 일을 하고 만들어진 화면을 웹브라우저에게 전송하여 웹브라우저가 출력하게 한다.
뷰는 모델의 데이터에 액세스 하는 방법을 알고 있지만 이 데이터가 무엇을 의미하는지, 사용자가 이를 조작하기 위해 무엇을 할 수 있는지는 알 수 없다.
모델이 가진 정보(ex. 사각형의 위치, 텍스트 포맷)를 따로 저장하지 않아야 하며 사각형의 모양과 같이 화면에 표시하는 정보만 가지고 있어야 한다.
또한 수정이 발생하면 컨트롤러에게 이를 알려야 한다.
[Controller]
컨트롤러
는 하나 이상의 모델과 하나 이상의 뷰를 연결하는 다리 역할을 하며 이벤트와 같은 메인 로직을 담당한다.
모델과 뷰의 생명주기도 관리하며 클라이언트의 요청을 받았을 때, 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출한다.
또한, 클라이언트가 보낸 데이터가 있다면 모델에 전달하기 쉽게 데이터를 가공한다. 모델이 해당 업무를 마치면 최종적으로 그 결과를 뷰에게 전달한다.
레스토랑 예제
MVC 패턴을 레스토랑의 예제로 이해해보자.
내가 레스토랑을 방문하면 웨이터는 나에게 메뉴판을 제공한다. 나는 메뉴를 본 다음 먹고 싶은 음식을 골라 웨이터에게 주문을 할 것이다.
그럼 웨이터는 이 주문을 받아 적어서 부엌에 있는 주방장에게 건네준다. 주방장은 냉장고에서 나오는 재료를 사용하여 요리를 할 것이다.
요리가 완성되면 웨이터가 주방에서 음식을 가져와서 나에게 건네주고, 나는 맛있게 먹기만 하면 된다.
이 시나리오에서 나는 애플리케이션을 사용하는 사용자이며 메뉴와 음식은 뷰의 컴포넌트이다.
요리사와 냉장고는 재료라는 원시 데이터를 추출하고 변환한 다음 사용자에게 제시하기 때문에 모델이라고 생각할 수 있다.
마지막으로, 웨이터는 들어오는 모든 요청을 수락하고 뷰와 모델 사이의 인터페이스 역할을 하는 컨트롤러라고 볼 수 있다.
장점
1. 여러 개발자가 모델, 컨트롤러 및 뷰에서 동시에 작업할 수 있기 떄문에 개발 속도가 빨라진다.
2. 재사용성과 확장성이 용이하다.
단점
1. 뷰와 모델 사이의 의존성이 높이 때문에 어플리케이션이 커질수록 복잡해지고 유지보수가 어려워진다.
2. 이 패턴을 이해하고 응용 프로그램에 구현하는 것이 매우 복잡해질 수 있기 때문에 MVC를 사용하고자 하는 개발자는 여러 기술에 숙련되어야 한다.
References
'CS > 개발상식' 카테고리의 다른 글
Git & GitHub (0) | 2022.09.17 |
---|---|
함수형 프로그래밍 (0) | 2022.09.16 |
TDD(Test-Driven Development) (0) | 2022.09.15 |
RESTful API (0) | 2022.09.09 |
객체 지향 프로그래밍의 설계원칙, SOLID (0) | 2022.09.07 |