MVC

최경락 (K_ROCK_)·2022년 2월 4일
0

MVC 란?

  • Model - View - Controller 로 나뉘는 프로그램 설계 패턴이다.
    → 프로그램 설계 패턴에는 단방향 데이터 흐름이나, Flux 패턴 등이 있다.
  • View 를 통해 표시된 데이터를 사용자가 조작하게 되면, Controller를 통해 Model 에서 데이터를 가져오게 되고, 해당 데이터를 다시 View를 통해 사용자에게 전달하는 것을 말한다.
  • 하나의 코드에서 입력과 출력을 전부 처리하는 것이 아니라, 각각의 역할을 관심사 분리하는 것.

Model

  • 실질적인 데이터를 가지며, DB와 통신하여 데이터를 가져오거나, Model 자체가 데이터를 가지고 있다.
  • Controller 가 요청한 내용에 따라 그에 맞는 데이터를 Controller 에게 다시 전달해준다.
  • View와 직접적으로 대화하는 일은 많지않다.
  • 식당에서의 주방과도 같다.

View

  • 어떤 데이터를 받아 그 내용을 표시하는데 집중한다.
    → 다른 데이터를 저장하거나 하지 않는다.
  • Controller에게 Action을 전달하며, 전달 된 이후에는 어떤 과정이 일어나는지 알 수 없다.
    → 객체 지향 프로그래밍과 비슷
  • 식당에서의 테이블과도 같다.

Controller

  • View에서 어떤 Action, Input 등의 입력을 받으면, 해당 입력 데이터를 가공 후 Model로 전달한다.
  • 이후 Model에서 출력이 전달되면, 해당 출력을 다시 가공하여 View로 전달하게 된다.
    → 다리 역할
  • 식당에서의 종업원과도 같다.

정리하자면...

  • MVC 패턴은 각각 데이터 처리 및 DB 통신, 데이터 표현 및 입력, 가공 및 전달 의 역할을 관심사 분리 한것이다.
  • 식당으로 치면,
    1. 우리는 테이블에 앉아서 메뉴판을 보고 종업원에게 주문을 한다.
      → 유저가 View에서 Action을 발생시킴.
    2. 종업원은 해당 주문을 정리해서 주방에 전달한다.
      Controller 가 해당 Action을 가공Model로 전달함.
    3. 주방은 해당 내용에 따라 요리를 만든다.
      Model이 해당 데이터를 가공하거나, 조건에 맞는 데이터를 가져옴.
    4. 종업원은 만들어진 요리와 식기, 반찬등을 챙겨 우리의 테이블으로 전달한다.
      Model에게서 전달받은 데이터를 가공하여 View로 전달한다.
    5. 우리는 테이블에 올려진 요리를 먹는다.
      → User 가 View에서 전달된 데이터를 확인함.

+

  • 이미 대다수의 서비스들에서 MVC 패턴을 이미 사용하고 있다.
  • 혹은, 내가 어떤 문제를 해결하기 위해 어떤 기능을 분리시켰다면, 이미 해당 내용이 MVC와 일맥상통 할 수도 있다.

0개의 댓글