프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것을 의미한다. 각종 라이브러리와 프레임워크의 기본이 된다.
🤖ChatGPT: MVC, MVP, MVVM 패턴의 목적의 차이점을 알려줘
MVC(Model-View-Controller), MVP(Model-View-Presenter), MVVM(Model-View-ViewModel) 패턴은 모두 소프트웨어 디자인 패턴 중에서 UI 계층에서 많이 사용되는 패턴입니다. 이들 패턴은 각각 목적과 구조가 다르며, 각각의 장단점이 있습니다.
따라서, 각각의 패턴은 UI와 데이터 로직을 분리하여 애플리케이션의 구조를 개선하고, 개발 생산성과 코드 품질을 향상시키기 위한 목적을 가지고 있습니다.
- MVC(Model-View-Controller) 패턴
- MVC 패턴은 UI 컴포넌트를 모델(Model), 뷰(View), 컨트롤러(Controller)로 분리하여 애플리케이션을 보다 유지보수하기 쉽도록 만드는 것이 주요 목적입니다.
- 이 패턴에서는 뷰가 모델에 직접 접근하지 않고, 컨트롤러가 중개자 역할을 하면서 뷰와 모델의 상호작용을 관리합니다.
- MVP(Model-View-Presenter) 패턴
- MVP 패턴은 뷰(View), 모델(Model), 프레젠터(Presenter)를 분리하여 뷰와 모델의 결합도를 낮추고, 테스트 용이성을 높이는 것이 주요 목적입니다.
- 뷰는 UI를 표현하고, 모델은 데이터를 처리하며, 프레젠터는 뷰와 모델 사이에서 데이터를 주고받으며 뷰의 상태를 업데이트합니다. 이렇게 하면 뷰와 모델의 변경이 서로 독립적으로 일어날 수 있으며, 각각의 컴포넌트를 개별적으로 테스트할 수 있습니다.
- MVVM(Model-View-ViewModel) 패턴
- MVVM 패턴은 뷰(View), 모델(Model), 뷰모델(ViewModel)을 분리하여 UI와 데이터 처리를 분리하는 것이 주요 목적입니다.
- 뷰는 UI를 표현하며, 뷰모델은 뷰의 데이터와 동작을 캡슐화하고, 모델은 데이터를 처리합니다. 이렇게 하면 뷰모델은 뷰의 상태와 데이터 처리를 담당하면서 뷰와 모델 사이에서 중개자 역할을 하게 됩니다.
- 이 패턴에서는 뷰모델과 뷰의 상호작용을 데이터 바인딩을 통해 처리하므로, 뷰와 뷰모델 사이의 코드 중복과 결합도를 낮출 수 있습니다