반응형
안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️ 입니다.
바로 오늘의 주제에 대해 아래 대화로 알아보도록 하죠!
👨🏻💼 : 안녕하세요 여러분~ 우리가 유지보수와 개발 효율 상승을 위해서는 무엇을 할 수 있을까요?
🙋🏻♂️ : 선생님 안녕하세요! 흠.. 재사용 가능한 코드블럭이라고 생각합니다!
👨🏻💼 : 호호 그 말도 맞지만 보편적으로 사용하는 것은 디자인 패턴이라는 것입니다! 오늘은 이것에 대해 알아보도록 할게요!
🙋🏻♂️ : 넵 선생님!
(ㅋㅋㅋㅋㅋ) 위에 대화 처럼 오늘은 디자인 패턴에 대해 알아보도록 할겁니다!
그 중에서 가장 보편적인 MVC, MVP, MVVM 에 대해!
1. MVC
Model + View + Controller 를 합친 용어
1-1. 구조
- Model : 어플리케이션에서 사용되는 데이터를 정의하는 부분.
- View : 사용자에게 보여지는 UI.
- Controller : 사용자의 입력(Action)을 받고 처리하는 부분.
1-2. 동작 원리
- 사용자의 입력(Action)은 Controller를 통해서 들어오게 됩니다.
- Controller는 사용자의 입력(Action)을 확인하고, Model 데이터를 변경합니다.
- Controller는 Model 데이터를 처리할 View를 선택합니다.
- View는 Model을 이용하여 화면을 업데이트를 합니다.
1-3. 특징
- Controller는 여러개의 View를 선택할 수 있는 1:N 구조입니다.
- Controller는 View를 선택만 하고 직접 업데이트를 하지 않습니다.
💡여기서 잠깐💡
🙋🏻♂️ : 선생님 근데 iOS에서의 ViewController는 뭔가요..?
👨🏻💼 : 아주 좋은 질문이에요. iOS 개발의 UI 개발에서는 View와 Controller가 합쳐진 ViewController 라는 기본 클래스를 상속받고 있습니다. 고로 iOS에서는 View와 Controller는 1:1 구조랍니다.
🙋🏻♂️ : 감사합니다 선생님!
1-4. 장점
- 가장 널리 사용되고 있는 디자인 패턴
- 단순하다 보니 보편적으로 많이 사용되고 있다.
1-5. 단점
- 사용자에게 UI를 보여주는 View과 데이터 정의 및 처리하는 부분인 Model 사이의 의존성이 높다.
- 어플리케이션이 커질 수록 복잡해지고 유지보수가 힘들어진다.
2. MVP
Model + View + Presenter 를 합친 용어
2-1. 구조
- Model : 어플리케이션에서 사용되는 데이터를 정의하는 부분.
- View : 사용자에게 보여지는 UI.
- Presenter : View에서 요청한 정보로 Model을 가용하여 View에게 전달해주는 부분. View와 Model 사이에 오작교(?) 역할
2-2. 동작 원리
- 사용자 입력(Action)은 View를 통해 들어옵니다.
- View는 데이터를 Presenter에게 요청합니다.
- Presenter는 Model에게 데이터를 요청합니다.
- Model은 Presenter에게 데이터를 응답합니다.
- Presenter는 View에게 데이터를 응답합니다,
- View는 Presenter가 응답한 데이터를 이용하여 화면을 업데이트를 합니다.
2-3. 특징
- Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 역할을 합니다.
- Presenter와 View는 1:1 관계입니다.
2-4. 장점
- VIew와 Model의 의존성을 해결하였습니다. ( Presenter를 통해서만 데이터를 주고 받을 수 있다 )
2-5. 단점
- View와 Model의 의존성은 해결되었지만 다리 역할을 하는 Presenter에 대한 의존성이 높아졌습니다.
- View와 Presenter의 의존성이 강해지는 단점이 있습니다.
3. MVVM
Model + View + ViewModel 를 합친 용어
3-1. 구조
- Model : 어플리케이션에서 사용되는 데이터를 정의하는 부분.
- View : 사용자에게 보여지는 UI.
- View Model : View를 나타내기 위해 Model에서 가져온 데이터를 가공하여 데이터 처리하는 부분.
3-2. 동작 원리
- 사용자의 입력(Action)이 View를 통해 들어옵니다.
- View에 입력(Action)이 들어오면, 미리 정의된 Command 패턴으로 View Model에 입력(Action)을 전달합니다.
- View Model은 Model에게 데이터를 요청합니다.
- Model은 View Model에게 요청받은 데이터를 응답합니다.
- View Model은 Model을 통해 응답 받은 데이터를 가공하여 저장합니다.
- View는 View Model과 Data Binding을 통해 화면을 업데이트 합니다.
💡여기서 잠깐💡
🙋🏻♂️ : 선생님 Command 패턴과 Data Binding은 무엇인가요?
👨🏻💼 : Command 패턴과 Data Binding은 따로 포스팅을 했으니 위의 하이퍼링크를 통해 글을 읽고 오도록 합시다 ㅎㅎ
🙋🏻♂️ : 넵! 선생님!
3-3. 특징
- Command 패턴과 Data Binding 두 개의 패턴을 사용하여 구현되었습니다.
- View와 View Model 간의 의존성을 해결했습니다.
- View Model과 View는 1:N 관계입니다.
3-4. 장점
- View와 Model 사이의 의존성이 없다.
- View와 View Model 사이의 의존성이 없다.
- 각각의 부분은 독립적이므로 모듈화하여 개발할 수 있다.
3-5. 단점
- 러닝커브가 다른 디자인패턴에 비해 높다.
- View Model의 설계가 쉽지 않다.
감사합니다.
참고
반응형
'iOS📱 > Common' 카테고리의 다른 글
[디자인패턴] Data Binding ( MVVM ) (0) | 2025.02.11 |
---|---|
[디자인패턴] 커맨드 패턴 ( Command Pattern ) (0) | 2025.02.05 |
[ iOS ] GCD 4편 - GCD ( Grand Central Dispatch ) (0) | 2023.01.19 |
[ iOS ] GCD 3편 - Serial vs Concurrent (0) | 2023.01.18 |
[ iOS ] GCD 2편 - Sync vs Async (2) | 2023.01.12 |