디자인 패턴
소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
사용이유
개발의 효율성, 유지보수성, 운용성, 최적화
MVC(Model, View, Controller)
하나의 어플리케이션, 프로젝트를 구성할 때 그 구성요소를 세 가지의 역할로 구분한 디자인 패턴
잘 구현하면 UI로부터 비즈니스 로직을 분리하여 시각적 요소와 비즈니스 로직을 서로 영향 없이 독립적으로 유지보수 가능
- 비즈니스 로직(도메인 로직): 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 부분
Model
- 프로그램이 작업하는 세계관의 요소들을 개념적으로 정의한 것
- 작업에 필요한 물리적 개체, 규칙, 작업 등의 요소들을 구분하는 역할
- 도메인 이해가 중요
- 물리적 요소 + 추상적인 요소를 특정 책임과 역할로서 구분될 수 있다면 최대한 구체적이고 작은 entity를 유지하면서 모델을 설계하는 것이 중요
View
- 사용자가 보는 화면에 입출력 과정 및 결과를 보여주기 위한 역할(UI)
- 입출력의 순서나 데이터 양식은 Controller에 종속되어 결정됨, 이때 뷰는 도메인 모델의 상태를 변환하거나 받아서 렌더링하는 역할
- View에서는 도메인 객체의 상태를 따로 저장하고 관리하는 클래스 변수나 인스턴스 변수가 필요 없음
Controller
- Model과 View를 연결시켜주는 다리
- View로부터 사용자의 Action을 받아 Model에 어떤 작업을 해야하는지 알려주거나 Model의 데이터 변화를 View에게 전달하여 View를 어떻게 업데이트할 지 알려줌
- 도메인 객체들의 조합을 통해 프로그램의 작동 순서나 방식을 제어
MVC 패턴 흐름
Model과 View는 Controller를 통해 소통

소통 방법
Controller -> Model 언제든지 얘기
Model은 Controller 얘기 못함
참고문헌
링크텍스트
비즈니스 로직