정보

MVVM패턴, MVC패턴

우왕차 2024. 12. 3. 21:20

디자인 패턴

Design Pattern은 소프트웨어 개발에서 자주 발생하는 문제들에 대한 검증된 해결책이라고 합니다. 자주 발생하는 문제를 해결하기 위해서 설계해놓은 방법들인것입니다.

 

디자인 패턴은 객체지향과 연관되어있습니다. 객체지향이란 코드를 객체 단위로 쪼개서 만들고 객체를 조합해서 사용하는 프로그래밍 방식입니다. 각 코드의 역할을 정하지 않아서 필요할때 조합할 수 있으며 오류가 생겼을때 수정이 이롭습니다.

 

이런 것처럼 디자인패턴도 일정한 역할을 나누어서 코드를 짜고 각 역할에 맞는 코드를 재활용하기도 합니다.

장점은 크게 4가지입니다.

  • 코드 재사용성 향상: 검증된 솔루션을 활용하여 개발 시간 단축
  • 유지보수성 개선: 표준화된 접근 방식으로 코드 이해도 향상
  • 확장성 제공: 미래의 요구사항 변화에 유연하게 대응
  • 팀 커뮤니케이션 향상: 공통된 어휘와 이해를 통한 협업 효율 증대

그 중 오늘은 MVC, MVVM 패턴에 대해서 알아보겠습니다.

 

MVC(Model View Controller)

MVC는 제가 웹을 공부할때 사용했던 패턴입니다. Model, View, Controller 3가지로 기능을 나누는 방법입니다.

가장 먼저 View는 사용자에게 보여지는 화면을 보여주는 역할을 합니다. 쉽게 말하는 프론트엔드, 화면 디자인을 한다고 생각하시면 되겠습니다. 

Controller는 사용자의 입력을 처리하는 기능을 처리합니다. 사용자가 뷰에서 이벤트를 발생하면 이를 인식하고 필요에 따라서 modelView를 변화시킵니다. ModelView 사이에서 일하는 중재자라고 생각하시면 됩니다.

마지막으로 Model입니다. Model은 쉽게 말하자면 데이터베이스를 다루는 기능을 모아놓은 것입니다. CRUD의 기능을 model이라고 생각하면 됩니다.

 

제가 생각하기에 MVC는 가장 기본이 되는? 디자인 패턴인거같습니다. 

 

MVVM(Model View ViewModel)

MVVM은 현재 Flutter를 공부하면서 사용하고 있는 패턴입니다. Model, View, ViewModel 3가지로 기능을 나누는 방법입니다.

View, Model의 역할은 MVC패턴과 같습니다. View는 사용자에게 보여지는 화면을 구성하고, Model은 데이터를 관리하는 CRUD같은 역할을 수행합니다.

ViewModelcontroller와 유사한듯 하지만 다릅니다. 둘다 modelview를 업데이트하지만 viewmodelview에 바인딩으로 연결되어 사용자에 의한 이벤트가 직접 viewmodel로 전달되고, 이러한 점 때문에 데이터의 흐름이 좀더 자동화 할 수 있습니다.

 

ViewModel의 View와 바인딩되어있다는 특징 때문에 이벤트에 빠르게 대응해야하는 모바일 개발에서는 MVVM패턴을 사용하는 것이 더 적합한것같습니다.

 

 

디자인 패턴은 위의 두가지 말고도 매우 많습니다. 각각의 패턴은 특징이 존재하는데 요즘에는 하나만 사용하지 않고 여러개를 합쳐서 사용하기도 한다고 합니다. 물론 모르고 사용하고 있을 수도 있지만, 좀더 디자인패턴에 대해서 공부하고 더 좋은 코드를 짤 수 있으면 좋겠습니다

'정보' 카테고리의 다른 글

모바일 빌드 포멧  (0) 2024.12.19
JSON 통신  (0) 2024.12.05
git 사용해보기  (0) 2024.10.24