오늘은 개발 패턴에 관해 이야기 해보려고 한다. MVC, MVVM등 다양한 패턴이 존재하는 것으로 알고 있다.
UIkit을 공부하였을때 MVC를 써보긴 했는데 먼저 잠깐 애플의 MVC 패턴을 보면
viewController로 view와 controller가 합쳐져서 모델과 상호작용을 하는 형태이다.
- Model : 앱의 데이터, 비즈니스 로직. 고로 구조체나 클래스가 주로 있다.
- View: 유저가 보는 화면을 그림. 앱과의 상호작용도 여기 포함. 이것은 모델과 소통해서는 안됨
- Controller : 이것이 모델과 뷰사이에서 상호작용하는 역할
근데 뷰컨의 단점이 무엇이냐면 컨트롤러가 뷰의 역할도 하고 life cycle도 관리하기에 뚱뚱해진다는 것이다. 분리도 어렵고 재사용도 어려워!
MVVM Pattern
ViewModel이라는 녀석이 나왔는데 이게 model과 뷰의 사이에서 서로의 정보를 교환하게 하는 중간다리이다.
비밀번호 설정으로 예를 들자면 유저가 뷰에서 비밀번호를 입력할때 사용자 정보가 들어있는 모델까지 접근하는 것은 위험하다.
그래서 뷰모델이 중간에서 이 비밀번호가 맞는지 모델과 상호작용을 하고 그 결과를 뷰에 표시해주는 형식이다.
뷰가 뷰모델에게 고객의 정보를 전달해주면 뷰모델이 마찬가지로 웹서비스와 통신하여 데이터를 가져온다고 생각하면 된다.
https://green1229.tistory.com/267
그런데 같이 공부를 하는 동료에게 좋은 자료를 받았다.
간단히 정리하자면 스유는 선언형 UI이여서 view안에 바인딩 처리되면 그게 뷰+뷰모델인데 굳이 나눠야 하냐는 의견이였다. 그렇게 되면 중간계층에 불필요한 레이어가 생기는 것이다.
스유에서 잘 어울리는 구조는 MVI, Flux라고 한다. 하지만 필자는 이것이 뭔지도 모르고 처음들어본다... 나중에 기회가되면 조금더 공부를 해보려한다.
'SWIFTUI' 카테고리의 다른 글
life cycle - swiftui (0) | 2023.07.03 |
---|---|
weak, unowned (0) | 2023.05.29 |
Spritekit with swiftui(1) (0) | 2023.05.01 |
CoreMotion - Swift (0) | 2023.04.29 |
Metal - swift (0) | 2023.04.22 |