MVC 패턴

Gyeomii·2022년 6월 30일
14

프로그래밍

목록 보기
3/3
post-thumbnail

📌 MVC( Model, View, Controller )

  • 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 디자인 패턴
  • 디자인 패턴 : 개발 중에 발생한 문제점들을 정리해서 상황에 따라 간편하게 적용할 수 있도록 정리한 형태
  • 좀 더 쉽고 편리하게 유지보수하고 공유하며 개발할 수 있도록 함
  • 서로 분리되어 각자의 역할에 집중할 수 있게끔 하여 개발을 하고 어플리케이션을 만든다면, 유지보수성, 어플리케이션의 확장성, 그리고 유연성이 증가하고, 중복 코당이라는 문제점 또한 사라지게 된다.
    • 유연성 : 클라이언트의 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대처할 수 있는 것

🔻 모델, Model (데이터를 다루는 주방장)

  • 어플리케이션의 정보, 데이터를 나타낸다.
  • 사용자가 편집하기 원하는 모든 데이터를 가지고 있어야 한다.
    • 화면에 출력할 정보의 크기, 내용, 포맷과 같은 정보를 다 갖고 있어야함.
  • 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
    • 모델에서 UI를 직접 조정하고 수정할 수 없어야 한다.
  • 데이터의 변경이 일어나면 변경통지에 대한 처리방법을 구현해야한다.
    • 모델에서 데이터가 변경이 되면 이를 사용자에게 알려야 하고, 누군가 모델의 데이터를 변경하는 요청을 보내면 이를 수신할 수 있는 방법을 구현해야한다.
    • 모델은 재사용 가능해야하며, 인터페이스에서도 변하지 않아야 한다.
  • 컨트롤러가 호출 할 때 요청에 맞는 역할을 수행한다.
  • 비즈니스 로직을 구현하는 영역으로 응용프로그램에서 데이터를 처리하는 부분
  • 비즈니스 로직 : 업무에 필요한 데이터 처리를 수행하는 프로그램 논리구조
  • DB에 연결하고 데이터를 추출하거나 CRUD를 수행한다.
  • 상태의 변화가 있을 때 컨트롤러와 뷰에 통보해 후속 조치 명령을 받을 수 있게 한다.

🔻 뷰, View (주방장이 내온 데이터를 세팅하는 직원)

  • 시각적인 부분, 화면을 담당하는 역할을 한다.
  • 모델의 데이터를 어떤 방식으로 사용자에게 보여줄지 연구하는 부분
  • 컨트롤러로부터 받은 모델의 결과값을 가지고 사용자에게 출력할 화면을 만드는 일을 한다.
  • 만들어진 화면을 웹브라우저에 전송하여 웹브라우저가 출력하게 하는것
  • 추출한 데이터나 일반적인 텍스트 데이터를 표시하거나 입력폼 또는 사용자와의 상호작용을 위한 인터페이스를 표시하는 영역

🔻 컨트롤러, Controller (흐름을 관리하는 매니저)

  • 모델이나 뷰에 대해서 알고 있어야 한다
    • 모델이나 뷰는 서로의 존재를 모르고, 변경을 외부로 알리고 수신하는 방법만 가지고 있기 때문에 이를 컨트롤러가 중재해야 함
  • 모델이나 뷰의 변경을 모니터링 해야 한다.
    • 모델이나 뷰의 변경 통지를 받으면 이를 해석해서 각각의 구성요소에게 통지를 해야합니다.
    • 어플리케이션의 메인로직은 컨트롤러가 담당하게 된다.
  • 사용자가 접근하려는 URL에 따라서 요청사항을 파악
  • 요청에 맞는 Model의 데이터를 의뢰
  • 데이터를 View에 반영해서 사용자에게 알려줌
  • 전반적인 제어를 담당하는 역할
  • 클라이언트의 요청을 받았을 때, 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출한다.
  • 클라이언트가 보낸 데이터가 있다면, 모델에 전달하기 쉽게 데이터를 가공함
  • 모델이 업무를 마치면 그 결과를 뷰에게 전달한다.

🔻Website에서 MVC구조

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

  1. 사용자가 웹사이트에 접속한다(Uses)
  2. Controller는 사용자가 요청한 웹페이지를 제공하기 위해서 Model에서 데이터를 호출한다. (Mainpulates)
  3. Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
  4. Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)
  5. 데이터가 반영된 View는 사용자에게 보여진다. (Sees)
profile
김성겸

1개의 댓글

comment-user-thumbnail
2022년 7월 1일

정리 쩌네요.... 감삼당

답글 달기