MVC 패턴

디자인 패턴 중 하나로, Model, View, Controller의 약자이다.

 

디자인 패턴 :

어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 '규약'을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말한다.

라이브러리나 프레임워크가 그에 따른 예. 결국 좀 더 쉽고 편리하게 사용할 수 있게 만든 특정한 방법을 뜻함.

MVC design pattern

하나의 어플리케이션, 프로젝트를 구성할 때 그 구성요소를 세 가지 역할(model, view, controller)로 구분한 패턴이다.

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

  • Model : 어플리케이션의 정보(데이터)를 나타냄
  • View : 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타냄
  • Controller : 데이터와 비즈니스 로직 사이의 상호 동작을 관리함.

1. 모델, Model

어떤 동작을 수행하는 코드를 말한다. 사용자에게 어떻게 보일지 신경 쓰지 않아도 되는 모델은 순수 public 함수로만 이루어진다. 몇몇 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고 나머지 함수들은 상태를 수정한다.

모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보해야한다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가/제거/수정할 수 있다. 

2. 뷰, View

데이터 및 객체의 입력, 그리고 보여주는 출력을 담당함. 데이터를 기반으로 사용자들이 볼 수 있는 화면이다.

뷰는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 읽어온다. 뷰는 모델이 가지고 있는 정보를 따로 저장해서는 안된다. 단지 읽어오기만 해야할 뿐! 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.

3. 컨트롤러, Controller

데이터와 사용자 인터페이스 요소들을 잇는 다리 역할을 한다. 즉, 사용자가 데이터를 출력하고 수정하는 것에 대한 '이벤트'들을 처리하는 부분을 뜻한다.

컨트롤러를 사용하여 모델의 상태를 바꾼다. 이 때 모델의 상태가 바뀌면 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여준다.

 

왜 MVC 패턴을 사용해야 할까?

사용자가 보는 페이지, 데이터 처리 그리고 이 두가지를 중간에서 제어하는 컨트롤러 이 세 가지로 구성되는 하나의 어플리케이션을 만들면 각각 맡은 바에만 집중할 수 있게 된다. 서로 분리되어 각자의 역할에 집중할 수 있게끔 하여 개발을 하고 그렇게 어플리케이션을 만든다면 유지보수성, 확장성, 유연성 등이 증가하고 중복 코딩이라는 문제점 또한 사라진다.

'Django > TIL etc' 카테고리의 다른 글

파이썬 패키지 관리툴 poetry 소개  (0) 2022.01.21
Poetry 와 장고 프로젝트  (0) 2022.01.21
모바일 앱을 위한 장고  (0) 2022.01.20
Django REST Framework 튜토리얼  (0) 2022.01.20
Django REST Framework 가 뭐야?  (0) 2022.01.20

+ Recent posts