본문 바로가기
JAVA/CONCEPT

[JAVA] MVC Pattern

by melll93 2023. 1. 17.

1. MVC 패턴이란 ?

  • 소프트웨어 아키텍쳐 패턴 중 하나로, 어플리케이션을 Model-View-Controller 3개의 서브 시스템으로 구조화하는 패턴이다. 사용자 인터페이스로부터 비즈니스 로직을 분리하여 어플리케이션의 시각적 요소나 그 이면에서 실행되는 로직을 서로 영향 없이 쉽게 고칠 수 있도록 구현한다.
  • 컴포넌트를 분리하여 코드의 효율적인 재사용을 가능케 한다. 여러 개의 뷰를 필요로 하는 대화형 어플리케이션에 적합하다.
  • 각 구성요소의 역할
    - 모델(Model) : 핵심 기능과 데이터 보관한다. 상태에 변화가 있을 때, 컨트롤러와 뷰에 통보한다. 이를 통해 뷰는 최신의 결과를 보여주고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 실행한다.
    - 뷰(View) : 사용자에게 정보를 보여주는 곳으로, 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.
    - 컨트롤러(Controller) : 사용자로부터 입력을 요청받아 모델에 명령을 보냄으로써 모델의 상태를 변경한다. 또, 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다.

 

 

  • MVC 패턴의 작동을 오른쪽 그림과 함께 간단한 예시로 살펴보자.
    1. USER가 웹 사이트에 접속을 한다.(USES)
    2. CONTROLLER는 사용자의 요청을 서비스하기 위해 모델을 호출한다.(MANIPULATES)
    3. MODEL은 데이터베이스나 파일과 같은 데이터 소스를 제어하여 그 결과를 리턴한다.
    4. CONTROLLER는 MODEL이 리턴한 결과를 VIEW에 보내준다.(UPDATES)
    5. 데이터가 반영된 VIEW가 사용자에게 보여진다.(SEES)

 

2. 여러 가지 아키텍처 패턴 비교

유형 특징 단점 개념도
모델-뷰-컨트롤러 패턴
(MVC Pattern)
3개의 서브 시스템으로 구조화하는 패턴이다. 동일한 모델에 대해 여러 개의 뷰를 만들 수 있으며, 런타임에 동적으로 연결 및 해제가 가능하다. 복잡성을 증가시켜, 사용자의 행동에 대한 불필요한 업데이트가 발생할 수 있다.
계층화 패턴
(Layered Pattern)
하위 계층은 추상화를 제공하고, 각 계층은 상위 계층에 서비스를 제공한다. 표준화가 쉬우며, 마주 보는 두 개의 계층 사이에서만 상호 작용이 이루어진다. 광범위한 적용이 어렵다. 특정 레이어가 불필요한 상황이 존재한다.
클라이언트-서버 패턴
(Client-Server Pattern)
하나의 서버와 다수의 클라이언트로 구성된 패턴으로, 사용자의 요청에 따라 서버가 클라이언트에 서비스를 제공하는 패턴이다. 일방적인 소통 구조. 프로세스 간 통신으로 오버헤드가 발생할 수 있따.
브로커 패턴
(Broker Pattern)
서버의 기능들을 브로커에게 넘겨줘, 클라이언트가 요청 시 브로커가 적합한 서비스를 리다이렉션하는 패턴. 동적인 실행이 가능하다. 데이터의 이동에서 데이터 변환 오버헤드가 발생할 수 있다.

이외에도 다양한 패턴들이 있지만, 추후에 필요에 따라 더 알아보도록 하자.

반응형

'JAVA > CONCEPT' 카테고리의 다른 글

[JAVA] Layered Pattern  (0) 2023.02.20
[JAVA] Proxy Pattern  (0) 2023.01.27
[JAVA] Singleton Pattern  (0) 2023.01.24
[JAVA] 객체 지향 설계의 5가지 원칙 - SOLID 원칙  (0) 2023.01.16
[JAVA] 객체 지향 프로그래밍 (OOP) - 특징  (0) 2023.01.15

댓글