디자인패턴
MVC 패턴 (Model-View-Controller pattern)
diligentdev
2024. 6. 20. 14:40
728x90
하나의 어플리케이션을 구성할 때 그 구성 요소를 세가지 역할로 구분한 패턴
- Model
- 어플리케이션의 정보, 데이터
- data, 정보들의 가공을 책임지는 컴포넌트
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 함
- 뷰나 컨트롤러에 대해 어떤 정보도 알지 말아야 함
- 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야만 함
- getter, setter
- 어플리케이션의 정보, 데이터
- View
- 사용자 인터페이스 요소
- 모델이 가지고 있는 정보를 따로 저장해서는 안됨
- 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야함
- 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 함
- Controller
- 사용자가 데이터를 클릭하고, 수정하는 것에 대한 이벤트틀을 처리하는 부분을 뜻함
장점
- 코드의 유지보수성 향상
- 각 구성 요소(모델, 뷰, 컨트롤러)가 명확한 역할을 가지고 있어 코드의 가독성과 유지보수가 용이
- 코드의 재사용성
- 특정 기능을 변경할 때 해당 부분만 수정하면 되므로 재사용성이 높아짐
- 개발 생산성 향상
- 개발자들이 각자의 역할에 집중할 수 있어 개발 효율성이 높아짐
- 예를 들어 디자이너는 뷰, 개발자는 모델과 컨트롤러에 집중할 수 있음
- 확장성 향상
- 새로운 기능을 추가하거나 기존 기능을 변경할 때 영향을 받는 부분이 최소화되므로 확장성이 높아짐
- 병렬 개발 가능
- 모델, 뷰, 컨트롤러가 분리되어 있어 여러 개발자가 동시에 작업 가능
- 디버깅 용이
- 각 구성 요소가 명확히 분리되어 있어 오류 발생 시 원인을 찾기 쉬움
단점
- 복잡성 증가
- MVC 패턴을 적용하면 코드의 분리로 인해 전체적인 복잡도가 증가할 수 있음
- 모델, 뷰, 컨트롤러 간의 의존성과 통신 방식을 고려해야 하므로 단순한 애플리케이션에서는 오버헤드가 발생할 수 있음
- 동시성 이슈
- 다중 스레드 환경에서 모델과 뷰 간의 동기화 문제가 발생할 수 있음
MVC 패턴은 대규모 프로젝트나 장기 유지보수가 필요한 프로젝트에 적합한 패턴
728x90