MVC

김주언·2022년 10월 31일
0

1. MVC 모델 구성요소

1.1 모델

데이터, 정보들의 가공을 책임지는 컴포넌트

모델은 어플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 처음 정의하는 상수, 초기화 값, 변수 등을 뜻한다. 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다.

모델 규칙

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야한다.
  • 뷰나 컨트롤러에 대해서 어떤 정보도 알지 않아야 한다.
  • 변경 발생 시 변경 통지에 대한 처리 방법을 구현한다.

1.2 뷰

사용자에게 보여지는 부분, 즉 유저 인터페이스(User interface)를 의미

MVC 패턴은 여러개의 뷰가 존재할 수 있으며, 모델에게 질의하여 데이터를 전달받는다. 뷰는 받은 데이터를 화면에 표시해주는 역할
모델에게 전달받은 데이터를 별도로 저장하지 않아야한다. 사용자가 화면에 표시된 내용을 변경하게 되면 모델에게 전달하여 모델을 변경해야 한다.

뷰 규칙

  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  • 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야한다.
  • 변경 발생 시 변경 통지에 대한 처리 방법을 구현한다.

1.3 컨트롤러

모델(Model)과 뷰(View) 사이를 이어주는 브릿지(Bridge) 역할

모델이나 뷰는 서로의 존재를 모르고 있다. 변경 사항을 외부로 알리고 수신하는 방법만 있음. 컨트롤러(Controller)는 이를 중재하기 위해 모델과 뷰에 대해 알고 있어야 한다. 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지. 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할을 수행한다.

컨트롤러 규칙

  • 모델이나 뷰에 대해서 알고 있어야한다.
  • 모델이나 뷰의 변경을 모니터링 해야한다.



2. MVC 모델 사용 이유

유지보수의 편리성을 위해서!

결합도가 높아진 시스템은 유지보수 작업 시 다른 비즈니스 로직에 영향을 미치게 되므로 사소한 코드의 변경이 의도치 않은 버그를 유발할 수 있고 또 고칠 코드의 양도 많아짐

이런 문제점을 해결하기 위해 UI 시스템의 핵심 컴포넌트를 모델, 뷰, 컨트롤러로 나누고 각 컴포넌트가 자신의 수행 결과를 다른 컴포넌트에게 전달하는 프로그래밍 방식을 사용한다.

MVC 패턴을 가진 시스템의 각 컴포넌트는 자신이 맡은 역할만 수행한 후 다른 컴포넌트로 결과만 넘겨주면 되기 때문에 시스템 결합도를 낮출 수 있다. 유지보수 시에도 특정 컴포넌트만 수정하면 되기 때문에 보다 쉽게 시스템 변경이 가능하다. (화면의 변경은 only 뷰, 데이터나 비즈니스 요건이 변경은 only 모델, 뷰와 모델 변경에 따른 일부 컨트롤러 변경)




3. MVC 패턴 적용 사례

3.1 MVC 패턴 적용 시나리오

  1. 브라우저 화면에서 서버로 데이터를 전달합니다.
  2. 컨트롤러에서 데이터를 전달받아 서비스에게 데이터를 전달합니다.
  3. 서비스는 JpaRepository를 이용하여 전달받은 데이터를 데이터베이스에 INSERT 합니다.
  4. INSERT 수행 후 컨트롤러는 서비스를 통해 데이터를 다시 조회합니다.
    5.조회한 데이터를 모델 객체를 통해 뷰에게 전달합니다.
  5. 화면에 변경이 발생하는지 확인합니다.

profile
학생 점심을 좀 차리시길 바랍니다

0개의 댓글

관련 채용 정보