MVC 패턴

박지윤·2022년 8월 1일
0

Backend

목록 보기
4/12

model-view-controller, MVC
소프트웨어 디자인 패턴 중 하나. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

MVC 구성요소

✅ view

  • 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다
  • 즉, 눈에 보이는 것
  • 웹의 경우 html, css로 나타내는 요소
  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
    (화면에 글자를 표시 하기 위해 모델이 가지고 있는 정보를 전달받게 될텐데, 그 정보를 유지하기 위해서 임의의 뷰 내부에 저장하면 안된다. 단순히 네모 박스를 그리라는 명령을 받으면, 화면에 표시하기만 하고 그 화면을 그릴 때 필요한 정보들은 저장하지 않아야 한다.)

✅ controller

  • 컨트롤러가 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다.
    (예: 워드 프로세서에서 문서를 편집하는 것)
  • 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다.
    (예: 문서를 스크롤하는 것)
  • 모델이나 뷰는 서로의 존재를 모르고, 변경을 외부로 알리고, 수신하는 방법만 가지고 있지만 컨트롤러는 모델과 그에 관련된 뷰에 대해서 알고 있어야 한다.

✅ model

  • 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다.
  • 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고,
    컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다.
  • 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다.
  • 즉, 데이터 저장소(ex. DB)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룬다.

➡ 게시판에 읽히고 쓰이고 수정되는 글들은 데이터베이스에 데이터로 저장되는데, 이 데이터의 형식을 지정하고 저장하고 불러오는 작업들에 대한 코드들이 model 파트에서 이루어짐

➡ 이걸 사용자들이 목록과 글, 입력화면 등으로 시각적으로 볼 수 있게 해주는 html, css 등의 요소가 view 파트에서 이루어짐

➡ model의 데이터를 view에 연결해서 사용자가 GUI 화면을 통해 데이터를 읽고 쓰고 지울 수 있도록 전반적 제어를 하는 파트가 controller임.

왜 MVC 패턴을 사용할까

사용자가 보는 페이지, 데이터처리, 그리고 이 2가지를 중간에서 제어하는 컨트롤, 이 3가지로 구성되는 하나의 애플리케이션을 만들면 각각 맡은바에만 집중을 할 수 있게 된다. 공장에서도 하나의 역할들만 담당해서 처리하면 더 효율적이게 되는 것과 마찬가지.

서로 분리되어 각자의 역할에 집중할 수 있게끔 한다면
유지보수성, 애플리케이션의 확장성, 유연성이 증가하고, 중복코딩이라는 문제점도 사라진다.

*유연성: 여기서 유연성은 클라이언트의 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대처할 수 있는 것을 말한다.

MVC 패턴의 예

✔ MVC 패턴을 사용하는 프레임워크나 라이브러리

구글의 AngularJS, php의 코드이그나이터

python의 django, facebook의 react

Spring MVC

0개의 댓글