CS
MVC 패턴
NelchuPapa
2024. 11. 23. 21:33
반응형
MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이뤄진 디자인 패턴이다.

구성
모델 (Model):
모델은 애플리케이션에서 데이터를 뜻하며, 데이터베이스, 상수, 변수와 같은 데이터를 처리하는 계층이다.
- 역할:
- 데이터를 생성, 수정, 삭제, 갱신하는 작업을 담당한다.
- 비즈니스 로직과 관련된 작업을 수행하며, 뷰나 컨트롤러와 독립적으로 동작한다.
- 특징:
- 뷰와 컨트롤러에 대해 전혀 알지 못하고 독립적으로 사용할 수 있도록 설계한다.
- 데이터 상태를 변경하면 컨트롤러나 뷰로 알려줄 수 있다.
- 예시:
- 온라인 쇼핑몰에서 상품 목록을 가져오는 코드에서, 상품 데이터를 다루는 로직은 모델에 위치한다.
- 뷰에서 사용자가 상품 수량을 변경하면, 컨트롤러가 이를 모델로 전달하여 데이터베이스를 갱신한다.
뷰 (View):
뷰는 사용자 인터페이스 요소로, 체크박스(checkbox), 버튼(button), 화면에 표시되는 텍스트 등과 같은 UI 구성요소를 뜻한다.
- 역할:
- 모델 데이터를 기반으로 즉각적으로 화면에 표시한다.
- 사용자가 볼 수 있는 화면을 정의하며, 데이터를 시각적으로 표현한다.
- 사용자 입력을 받아 컨트롤러에 전달한다.
- 특징:
- 모델을 직접 변경하지 않는다.
- 정보를 따로 저장하지 않으며, 데이터의 상태를 시각적으로만 표현한다.
- 예시:
- 상품 목록을 테이블 형식으로 보여주는 화면이 뷰에 해당한다.
- 사용자가 '구매하기' 버튼을 누르면, 버튼 이벤트는 컨트롤러로 전달된다.
컨트롤러 (Controller):
컨트롤러는 하나 이상의 모델과 하나 이상의 뷰를 이어주는 다리 역할을 한다.
- 역할:
- 사용자 입력(이벤트)을 처리하고, 이를 모델에 반영하거나 뷰에 업데이트 요청을 전달한다.
- 메인 로직을 담당하며, 애플리케이션의 흐름을 제어한다.
- 특징:
- 모델과 뷰의 생명주기를 관리한다.
- 변경 사항이 발생하면 이를 해석하고, 다시 뷰에 알려준다.
- 예시:
- 사용자가 검색창에 입력한 내용을 처리해 데이터베이스를 조회하고, 결과를 뷰로 전달해 표시한다.
장점
- 역할 분리: 모델, 뷰, 컨트롤러의 역할이 명확히 분리되어 코드의 가독성과 유지보수성이 높다.
- 유연성: 뷰와 모델이 독립적이므로, UI를 변경해도 모델에 영향을 주지 않는다.
- 재사용성: 뷰나 모델을 독립적으로 재사용하거나 확장하기 쉽다.
- 테스트 용이성: 각 구성 요소가 독립적이므로 유닛 테스트가 쉽다.
단점
- 복잡성 증가: 프로젝트 규모가 커질수록 설계가 복잡해질 수 있다.
- 데이터 흐름의 혼란: 모델과 뷰가 상호작용할 때 컨트롤러를 거치는 데이터 흐름이 복잡해질 수 있다.
예시로 간단히 정리하면:
- 모델은 "상품 데이터와 가격 정보를 관리하는 영역" (백엔드와 연결)
- 뷰는 "상품 리스트를 보여주는 UI 화면" (유저가 직접 상호작용)
- 컨트롤러는 "상품 추가 요청을 처리하고, 결과를 모델과 뷰로 전달" (앱의 중간 다리 역할)
반응형