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 간에는 접점이없고 , 의존성이 없다 !
추후에 유지보수가 쉽다는 장점덕에 많이 사용하는것같다.