23.09.14 [ IOS ] MVC 패턴과 MVVM 패턴의 기본 설명과 차이점

2023. 9. 14. 21:07카테고리 없음

MVC가 무엇인가 ?

 

M = Model

V = View
C = Controller

 

MVC패턴이 뭘까?

 

코드를 짜다보면 각 코드들의 역할이 있다.

정말 UI UX 로만 그려주는 코드가있기도하고 , 

 

여러가지 역할을 묶어주는 구조체의 코드가 있기도하고

 

데이터를 처리해주는 코드가 있는등 굉장히 다양한 코드가있는데 ,

물론 이 코드들을 한 파일에서 관리할 수 있겠지만

코드가 길어지면 길어질수록 이런방식은 독이되며 곤란을 야기한다.

 

그래서 MVC 패턴을 사용하여 

코드를 Model, VIew, Controller 의 역할 세개로 나누어 보기좋고 유지보수가 쉽도록 정리해두는 것 이라고 보면 된다.

 

간단히 설명하자면 Model은 데이터를 처리할 수 있는 곳,

View는 위에서 설명한것처럼 UI UX를 직관적으로 그려내주는 곳,

Controller는 데이터를 받아서 UI UX에 적용시키는 역할을 중개해주는곳 ,

즉 Model에서 받은값을 바탕으로 UI UX에 적용시키는

그런 역할이다.

 

그러나 이 중간역할을 해주는 Controller같은경우 View와 Model 양방향을 다 참조하다보니

코드가 많이 쌓이는 경우가 빈번하게 발생하게되고 , 

그러면 우리가 의도했던 코드의 유지보수가 다시 힘들어지게 된다.

 

그래서 사용자들이 단점개선을하여 만든패턴으

 

MVVM 패턴이다.

 

언뜻보면 M V V M 으로 네개의 역할이 나누어진것같지만 ( 내가 그랬음 )

사실 M = Model

V = View

VM = ViewModel 로 

세가지로 나누어져있다.

 

MVC와 다른게 Controller가 빠지고 ViewModel이 투입된것이다.

 

그러면 , 어차피 역할이 똑같이 세가지로 나뉠거면 뭐하러 하나를 뺴고 다른하나를 넣은거지?

라는 의문이 들 수 있는데,

이를통해 Controller에만 코드가 쌓이는 과부화현상을 막을 수 있기 때문이다.

 

우선 ViewModel은 View에서 표현되는 상태변화 메서드와 코드들을 포함하고있고, 

View는 그저 ViewModel의 상태변화를 감지해서 표현만 해주는것이다.

 

순서로 보자면 , View에 입력값을 넣으면 , ViewModel에 전달하고 , ViewModel은 Model에게 데이터 요청을 보내는 식이다.

그럼 Model이 받은 데이터를 재편성한뒤 , ViewModel에게 다시 전달해주면 ViewModel 내부에 저장하는 식인것이다.

 

이러한 점 떄문에 View 와 Model 간에는 접점이없고 , 의존성이 없다 !

추후에 유지보수가 쉽다는 장점덕에 많이 사용하는것같다.