CS

MVC 패턴

NelchuPapa 2024. 11. 23. 21:33
반응형

MVC 패턴은 모델(Model)뷰(View), 컨트롤러(Controller)로 이뤄진 디자인 패턴이다.

 

 

 

 


구성

모델 (Model):

모델은 애플리케이션에서 데이터를 뜻하며, 데이터베이스, 상수, 변수와 같은 데이터를 처리하는 계층이다.
  • 역할:
    • 데이터를 생성, 수정, 삭제, 갱신하는 작업을 담당한다.
    • 비즈니스 로직과 관련된 작업을 수행하며, 뷰나 컨트롤러와 독립적으로 동작한다.
  • 특징:
    • 뷰와 컨트롤러에 대해 전혀 알지 못하고 독립적으로 사용할 수 있도록 설계한다.
    • 데이터 상태를 변경하면 컨트롤러나 뷰로 알려줄 수 있다.
  • 예시:
    • 온라인 쇼핑몰에서 상품 목록을 가져오는 코드에서, 상품 데이터를 다루는 로직은 모델에 위치한다.
    • 뷰에서 사용자가 상품 수량을 변경하면, 컨트롤러가 이를 모델로 전달하여 데이터베이스를 갱신한다.

 

뷰 (View):

뷰는 사용자 인터페이스 요소로, 체크박스(checkbox), 버튼(button), 화면에 표시되는 텍스트 등과 같은 UI 구성요소를 뜻한다.
  • 역할:
    • 모델 데이터를 기반으로 즉각적으로 화면에 표시한다.
    • 사용자가 볼 수 있는 화면을 정의하며, 데이터를 시각적으로 표현한다.
    • 사용자 입력을 받아 컨트롤러에 전달한다.
  • 특징:
    • 모델을 직접 변경하지 않는다.
    • 정보를 따로 저장하지 않으며, 데이터의 상태를 시각적으로만 표현한다.
  • 예시:
    • 상품 목록을 테이블 형식으로 보여주는 화면이 뷰에 해당한다.
    • 사용자가 '구매하기' 버튼을 누르면, 버튼 이벤트는 컨트롤러로 전달된다.

 

컨트롤러 (Controller):

컨트롤러는 하나 이상의 모델과 하나 이상의 뷰를 이어주는 다리 역할을 한다.
  • 역할:
    • 사용자 입력(이벤트)을 처리하고, 이를 모델에 반영하거나 뷰에 업데이트 요청을 전달한다.
    • 메인 로직을 담당하며, 애플리케이션의 흐름을 제어한다.
  • 특징:
    • 모델과 뷰의 생명주기를 관리한다.
    • 변경 사항이 발생하면 이를 해석하고, 다시 뷰에 알려준다.
  • 예시:
    • 사용자가 검색창에 입력한 내용을 처리해 데이터베이스를 조회하고, 결과를 뷰로 전달해 표시한다.

 


 

장점

  1. 역할 분리: 모델, 뷰, 컨트롤러의 역할이 명확히 분리되어 코드의 가독성과 유지보수성이 높다.
  2. 유연성: 뷰와 모델이 독립적이므로, UI를 변경해도 모델에 영향을 주지 않는다.
  3. 재사용성: 뷰나 모델을 독립적으로 재사용하거나 확장하기 쉽다.
  4. 테스트 용이성: 각 구성 요소가 독립적이므로 유닛 테스트가 쉽다.

 

단점

  1. 복잡성 증가: 프로젝트 규모가 커질수록 설계가 복잡해질 수 있다.
  2. 데이터 흐름의 혼란: 모델과 뷰가 상호작용할 때 컨트롤러를 거치는 데이터 흐름이 복잡해질 수 있다.

 


예시로 간단히 정리하면:

  • 모델은 "상품 데이터와 가격 정보를 관리하는 영역" (백엔드와 연결)
  • 뷰는 "상품 리스트를 보여주는 UI 화면" (유저가 직접 상호작용)
  • 컨트롤러는 "상품 추가 요청을 처리하고, 결과를 모델과 뷰로 전달" (앱의 중간 다리 역할)
반응형