Tiny Star

📚 CS [ComputerScience]

Computer Science - MVC 패턴과 MVVM 패턴의 비교

청크 2023. 11. 8. 14:35

MVC (Model-View-Controller) 패턴
Model: 데이터와 비즈니스 로직을 관리하는 부분
View: 사용자 인터페이스를 표시하고 사용자 입력을 수신하는 부분
Controller: Model과 View 사이의 상호 작용을 조정하고 사용자 입력을 처리하는 부분

 

의존성
View는 Model에 종속되지만, Model과 View는 직접 통신하지 않음
Controller는 Model과 View 사이의 중재자 역할을 하고, Model과 View 간의 의존성을 관리함

 

데이터 바인딩
데이터 바인딩은 일반적으로 수동으로 처리됨
Controller가 Model에서 데이터를 가져와서 View에 수동으로 표시함

 

      전통적이고 간단한 패턴으로 익숙한 개발자가 많음
      상대적으로 쉽게 이해하고 구현할 수 있음
      복잡한 애플리케이션에서는 컨트롤러가 비대해질 수 있고, 유지보수가 어려울 수 있음
      순환 종속성 문제가 발생할 수 있음


MVVM (Model-View-ViewModel) 패턴
Model: 데이터와 비즈니스 로직을 관리하는 부분
View: 사용자 인터페이스를 표시하고 ViewModel에 데이터를 바인딩하고 사용자 입력을 처리하는 부분
ViewModel: View에 데이터를 노출하고 사용자 입력을 처리하는 부분

 

의존성
View는 ViewModel에 종속되며, ViewModel은 Model에 종속됨.
View와 ViewModel은 데이터 바인딩을 통해 자동으로 상호작용하며, View와 Model은 직접적으로 상호작용하지 않음.

 

데이터 바인딩
데이터 바인딩은 MVVM에서 중요한 개념이며, 데이터가 자동으로 View에 반영됨.
ViewModel이 Model 데이터를 View에 바인딩하고 사용자 입력을 ViewModel에 바인딩함.

      데이터 바인딩을 통해 코드가 간결하고 UI 업데이트가 자동화
      테스트 용이성이 뛰어남
      뷰와 모델의 분리를 강화하고, 순환 종속성 문제를 해결
      러닝 커브가 있을 수 있으며, 데이터 바인딩 구현이 복잡함
      일부 오버헤드가 발생

 

 

면접 대비 요약

MVC(Model-View-Controller) 패턴과 MVVM(Model-View-ViewModel) 패턴은 모두 소프트웨어 디자인 패턴으로, 

사용자 인터페이스와 비즈니스 로직을 구조화하는 목적을 가지고 있습니다.

MVC 패턴 View는 Model에 종속되지만 직접적으로 상호 작용하지 않고 데이터 바인딩은 수동으로 처리 됩니다.

또한 MVC는 전통적이고 간단하지만, 복잡한 애플리케이션에서는 유지보수가 어려울 수 있고, 순환 종속성 문제가 발생할 수 있습니다.

MVVM 패턴의 View는 ViewModel에 종속되며, ViewModel은 Model에 종속됩니다. 또한 데이터 바인딩을 통해 데이터가 자동으로 vIEW에 반영되며, 상호작용이 자동화 된다.

MVVM은 데이터 바인딩을 통해 코드가 간결하고 테스트 용이성이 뛰어나며, 뷰와 모델의 분리를 강화합니다. 하지만 러닝 커브가 있을 수 있으며, 데이터 바인딩 구현이 복잡할 수 있습니다.