Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- RxCocoa
- gitlab
- swift알고리즘
- cleanarchitecture
- OperationQueue
- IOS
- ai expo
- 알고리즘
- AI
- Content Hugging priority
- rxswift
- ReactiveX
- Union-Find
- 자료구조
- 동작과정
- swift
- gitlabci/cd
- LLM
- 클린아키텍처
- 오토레이아웃
- RxSwift요약
- CICD
- Content Compression Resistance priority
- 동시성프로그래밍
- CI/CD
- mvvm
- apple intelligence
- 백준
- Autolayout
- 애플인텔리전스
Archives
- Today
- Total
JosephCha의 개발일지
MVC 패턴 본문
우선, 디자인 패턴을 사용하는 이유
- 디자인 패턴이란 프로그램 개발 시, 자주 마주하는 애로 상황에 대한 일반적이고 재사용 가능한 추상화된 해결책.
- 쉽고, 편리하게 프로그램을 개발, 유지보수, 그리고 모든 이들과 공유하기 위한 규약.
Model, View, Controller
쉽게 생각해서, MVC는 무엇(Model)을 어떻게(Controller) 보여줄(View) 것인가 입니다.
Model
- 데이터와 관련된 객체, 데이터를 관리하는 로직(비즈니스 로직) 포함.
- Controller와 직접적으로 연결.
- KVO(Key Value Observation)를 통해, Model의 변경사항이 있을 때, Controller에게 알림. (윗 그림 참고)
- View와 직접적으로 연결되면 안됨.
- 재사용성 강조됨.
- 종류
- 데이터로 사용하는 구조체
- 네트워크 로직
- persistance 로직 (ex. 로컬파일에 저장된 데이터)
- 데이터 파싱 로직 (PKCS parser, 증명서 parser)
- Manager 객체
View
- UIView를 상속해 만들어진 서브 클래스들 (UI 컴포넌트).
- Controller와 직접적으로 연결.
- Delegate 패턴을 통해 사용자의 상호작용(ex. 테이블뷰 셀 터치)으로 인한 정보를 Controller에게 알림. (윗 그림 참고.)
- Model과 직접적으로 연결되면 안됨.
- 재사용성 강조.
Controller
- View와 Model의 중간 역할
- Model로 부터 데이터 가져옴.
- View의 Life Cycle을 관리.
- 재사용성이 적다. ㅠ
장점
- 비교적 간단하고 익숙한 패턴이라, 구조파악 및 구현을 쉽고 빠르게 할 수 있다. (간단한 프로젝트에 용이)
단점
- Controller가 View의 Life Cycle를 관리하기 떄문에, 이 둘을 분리하기 어렵다. 그래서 재사용성이 떨어지고, 단위 테스트가 힘들다.(MVVM을 사용하는 이유)
- 네트워크 통신 로직, Delegate 패턴의 프로토콜 구현부분 등이 Controller에서 구현되는 경우가 많아, Controller가 비대해 질 수 있다. 그렇게 되면 유지보수가 매우 힘들어 진다.
'iOS' 카테고리의 다른 글
네트워크 Endpoint (0) | 2023.08.09 |
---|---|
iOS 동작과정 (0) | 2023.08.09 |
UIKit 기본개념 (0) | 2023.08.09 |
객체지향 프로그래밍 (0) | 2023.02.08 |
Content Hugging priority & Content Compression Resistance priority (0) | 2021.11.29 |
Comments