MVC 패턴은
Model, View, Controller로 구성된 디자인 패턴입니다.
하나의 애플리케이션, 프로젝트를 구성할 때
필요한 구성요소를 세 가지의 역할로 구분한 패턴입니다.
모델은
애플리케이션의 데이터를 조작하는 역할을 합니다.
규칙으로는
1. 애플리케이션에 있어야 하는 모든 정보를 갖고 있어야 합니다.
2. 데이터의 조작을 직접 할 수 있도록, 뷰나 컨트롤러의 값을 참조하지 않아야 합니다.
3. 데이터의 변경이 일어날 경우, 이를 알릴 방법을 구현해야 합니다.
뷰는
사용자 인터페이스 요소를 나타내는 역할로,
컨트롤러와 모델로 인해 구성된 화면을 출력합니다.
규칙으로는
1. 모델이 가지고 있는 정보를 갖고 있어서는 안됩니다.
2. 뷰나 컨트롤러의 값이나 구성 요소를 참조하지 않아야 합니다.
3. 데이터의 변경이 일어날 경우, 이를 알릴 방법을 구현해야 합니다.
컨트롤러는
데이터를 조작하는 모델과
사용자 인터페이스를 나타내는 뷰 사이에서
데이터를 받고 보낼 수 있도록 이어주는 역할을 합니다.
규칙으로는
1. 모델과 뷰의 값이나 구성요소에 대해서 알고 있어야 합니다.
2. 모델과 뷰에서의 데이터 변경을 모니터링 해야합니다.
MVC 패턴은 모델, 뷰, 컨트롤러로
서로 분리되어 각자의 역할에 집중할 수 있게 구성되어 있기 때문에
코드의 가독성과 유지보수성
애플리케이션의 확장성 및 유연성이 증가할 수 있습니다.
이러한 장점 덕분에
Angular.js, Python Django와 같은 프레임워크에서 사용되고 있습니다.
MVC 패턴은 세 가지 구성요소가 서로 데이터를 주고 받는
양방향 데이터흐름을 가지고 있기 때문에
기능을 추가하면 추가할수록 그 복잡성이 기하급수적으로 증가한다는 한계에 부딫혔습니다.
이는 결국 애플리케이션의 확장성 및 유지보수성 등에
비효율적인 영향을 미치기 때문에 개선의 필요성이 나타났습니다.
이를 해결하기 위해 나온 단방향 데이터 흐름을 제어하는 패턴이 FLUX 패턴입니다.