공부해봅시당

[디자인 패턴] MVC 패턴 본문

STUDY/디자인 패턴

[디자인 패턴] MVC 패턴

tngus 2023. 6. 9. 16:09

이전에 이미 학습했던 내용이지만 CS 스터디를 위해 MVC 패턴에 대한 정리를 해보려고 함

 

MVC 패턴이란?

MVC는 model, view, controller의 약자로, 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴

  • model: 애플리케이션의 정보(데이터)
  • view: 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소
  • controller: 비즈니스 로직 사이의 상호동작 관리

패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음

 

출처: https://beomy.tistory.com/43

핵심은 MVC 패턴을 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여 비즈니스 로직을 쉽게 고칠 수 있는 애플리케이션이 된다는 것

 

과거에는 View에 모든 비즈니스 로직까지 넣어 코드의 길이가 길어지고 유지보수가 힘들었음

최근에는 코드를 3가지 형태로 나누어 개발을 하는 MVC가 기본적인 디자인패턴이 되어 사용되고 있다고 함

 

Model, View, Controller

Model

  • 역할
    • Data와 애플리케이션이 무엇을 할 것인지를 정의
    • 내부 비즈니스 로직을 처리하기 위한 역할
    • 컨트롤러가 모델을 호출하면 DB와 연동하여 데이터(사용자 입출력 데이터 등) 와 연관된 비즈니스 로직을 처리하는 역할
    • 데이터 추출, 저장, 삭제, 업데이트 등의 역할 수행
  • 규칙
    • 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 함
    • View나 Controller에 대해 어떤 정보도 알지 말아야 함
    • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 함

 

View

  • 역할
    • 사용자에게 보여주는 화면(UI)
    • 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 역할
    • MVC에서느 여러개의 View가 존재할 수 있음
    • Model에서 받은 데이터는 별도로 저장하지 않음
  • 규칙
    • Model이 가지고 있는 정보를 따로 저장해서는 안됨
    • Model이나 Controller와 같이 다른 구성요소들을 몰라야 함
    • 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 함

 

Model과 View는 서로의 존재를 몰라야 함

 

Controller

  • 역할
    • Model과 View 사이를 이어주는 인터페이스 역할
    • Model이 데이터를 어떻게 처리할지 알려주는 역할
    • 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할
  • 규칙
    • Model이나View에 대해 알고 있어야 함
    • Model이나 View의 변경을 모니터링 해야 함

출처: https://velog.io/@seongwon97/MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80

 

 

MVC 구동 원리

출처: https://osy0907.tistory.com/63

MVC패턴은 Spring프레임워크와 JSP를 사용하는 웹 애플리케이션 개발에 많이 사용되고 있음

 

<웹 애플리케이션에서의 MVC의 구동 원리>

  1. 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청 (MVC 구조가 WAS라고 보면 된다.)
  2. 웹 서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달 (Matching)
  3. 서블릿은 모델 자바 객체의 메서드를 호출
  4. 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성
  5. 업무 수행을 마친 결과값을 컨트롤러에게 반환
  6. 컨트롤러는 모델로부터 받은 결과값을 View에게 전달
  7. JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달
  8. 뷰로부터 받은 화면을 웹 서버에게 전달
  9. 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력

 

MVC의 장점

  • 기능별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하여 가독성과 코드의 재사용 증가
  • 각 구성요소들을 독립시켜 협업을 할 때 맡은 부분의 개발에만 집중할 수 있어 개발의 효율성을 높여줌 -> 분업을 가능하게 함
  • 개발 후에도 유지보수성과 확장성이 보장됨

 

MVC의 한계

Model과 View는 서로의 정보를 갖고 있지 않는 독립적인 상태라고 하지만 Model과 View사이에는 Controller를 통해 소통을 이루기에 의존성이 완전히 분리될 수 없음

 

그래서 복잡한 대규모 프로그램의 경우 다수의 View와 Model이 Controller를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상이 발생하기도 함

이러한 현상을 Massive-View-Controller현상이라고 하며 이를 보완하기 위해 MVP, MVVM, Flux, Redux등의 다양한 패턴들이 생겨남

 

다음 시간에는 MVP에 대해 알아보도록 하겠음

 

 


출처

https://velog.io/@seongwon97/MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80

 

MVC 패턴이란?

모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.

velog.io

https://osy0907.tistory.com/63

 

MVC 패턴이란 무엇인가?

MVC 패턴이란? MVC - Model, View, Controller의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 *디자인 패턴이다. *디자인 패턴이란? : 건축으로치면 공법에 해당하는 것으로, 소프트웨어의 개발 방

osy0907.tistory.com

https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80

 

[Servlet] 서블릿(Servlet)이란?

서블릿의 개념과 동작 과정, 생명주기(메서드), 인터페이스, 서블릿 컨테이너에 대해 공부하고 정리한 내용입니다.

velog.io