MVC 정리

고 연우·2022년 9월 19일
0

SpringBoot

목록 보기
3/8

MVC 패턴

  • MVC( Model-View-Controller ) : 애플리케이션을 세 가지 역할로 구분한 개발 방법론

Model

  • Controller에서 받은 데이터를 저장하는 역할, 데이터를 가진 객체
    • 데이터는 내부의 상태에 대한 정보 또는 모델을 표현하는 이름 속성 등
  • Model의 상태에 변화가 있을 때 Controller와 View에 통보함
    • Controller는 Model의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정 가능
    • View는 최신의 결과를 보여줄 수 있음

Model 규칙

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 함
    • 즉, 화면안의 네모박스에 글자가 표현된다면, 네모박스의 화면 위치 정보, 네모박스의 크기정보, 글자내용, 글자의 위치, 글자의 포맷 정보 등을 가지고 있어야 한다는 것
  • 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 함
    • 데이터 변경이 일어났을 때 모델에서 화면 UI를 직접 조정해서 수정할 수 있도록 뷰를 참조하는 내부 속성값을 가지면 안 된다는 말
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
    • 모델의 속성 중 텍스트 정보가 변경이 된다면, 이벤트를 발생시켜 누군가에게 전달해야 하며, 누군가 모델을 변경하도록 요청하는 이벤트를 보냈을 때 이를 수신할 수 있는 처리 방법을 구현해야 합니다. 또한 모델은 재사용가능해야 하며 다른 인터페이스에서도 변하지 않아야 함

View

  • 클라이언트 측 기술 HTML, CSS, Javascript들을 모아둔 컨테이너
  • 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어옴
  • Controller로 부터 받은 Model 데이터를 바탕으로 사용자에게 표현해준다. 일반적으로 HTML, JSP... 에 해당한다

View 규칙

  • 모델이 가지고 있는 정보를 따로 저장해서는 안됨
    • 화면에 글자를 표시 하기 위해, 모델이 가지고 있는 정보를 전달받게 될텐데, 그 정보를 유지하기 위해서 임의의 뷰 내뷰에 저장하면 안됨
  • 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
    • 모델과 같은 자기 자신의 빼고는 다른 요소는 참조하거나 어떻게 동작하는지 알아서는 안됨
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
    • 뷰에서는 화면에서 사용자가 화면에 표시된 내용을 변경하게 되면 이를 모델에게 전달해서 모델을 변경해야 할 것이다. 그 작업을 하기 위해 변경 통지를 구현

Controller

  • 사용자가 접근 한 URL에 따라 요청을 파악한다. URL에 맞는 Method를 호출하여 Service와 함께 Business Logic을 처리한다. 최종적으로 나온 결과는 Model에 저장을 하고, View에 던져준다
  • 사용자가 접근한 URL에 따라 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model을 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려줌

Controller 규칙

  • 모델이냐 뷰에 대해서 알고 있어야 함
  • 모델이나 뷰의 변경을 모니터링해야 함
    • 모델이나 뷰의 변경 통지를 받으면 이를 해석해서 각각의 구성 요소에게 통지

MVC 패턴 사용하는 이유

  • 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행가능
  • Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리함
  • 중복 코딩의 문제점 제거

참고

0개의 댓글