iOS에서 사용되는 아키텍처
- MVC
- MVVM, MVVM - C
- MVVM - C → MVVM + Coordinator
- VIPER
- Clean Architecture
- TCA
What is Purpose of Architecture Pattern
- 유지보수성 향상
- 새로운 기능이나 기존 기능 수정 시 빠르고 안전하게 할 수 있어야 한다
- 관심사 분리 및 책임 분담
- 자신만의 역할을 정확히 수행하고, 서로에게 과도하게 의존하지 않아야 한다.
- 테스트 용이성
- 재사용성과 확장성 고려
MVC
Apple’s MVC

- Model
- 데이터 구조 정의
- 앱에서 사용하는 정보
- User, Product etc… → Class or Struct
- 데이터 관련 비즈니스 로직 처리
- View
- 화면에 보여지는 UI
- UILabel, UIButton, UIStackView etc…
- 사용자의 이벤트를 받아서 Controller에게 전달
- Touch, Scroll, Zoom, Drag etc…
- 이벤트를 직접 처리하지 않음
- 모델의 데이터를 사용하여 사용자에게 컨텐츠를 보여줌
- User 모델을 받으면 Name, Phone_number, E-mail
- Controller
- View와 Model 사이에서 데이터의 흐름과 이벤트 관리
- View에서 발생한 이벤트를 감지하고, 그에 따라 비즈니스 로직을 처리하거나 Model을 업데이트 하여 View를 갱신
- Ex) 사용자가 버튼 탭 → Controller가 해당 액션 처리 → Model에 데이터 요청 → 결과를 View에 전달하여 UI 업데이트
- 결국 비즈니스 로직을 처리
ViewController → View + Controller
Apple’s MVC → (View+Controller) + Model
MVC 장점
- 쉽다
- 그냥 프로젝트 생성 시 만들어지는 ViewController(UI + Buisness Logic) + Model 만 하면 됨
- 빠르다
- 설계 하는 것도 시간이 많이 걸리는 일인데 큰 고민이 필요 없음
- Apple의 프레임워크에 적용하기 좋다
- UIViewController가 MVC 기반으로 만들어졌음
MVC 단점
- 사람들을 Apple의 MVC를 Model-View-Controller가 아닌 Massive View Controller 라고 부름
- 대부분의 코드가 ViewController에서 처리하기 때문에 코드가 매우 길어짐
- 코드가 길어진다는 것은 하는 일이 많아지고 오류를 수정하거나 유지보수를 할 때 힘들다는 것(가독성 낮음)
- 역할이 명확하게 나뉘지 않음
- 테스트 코드 작성이 어렵다
Ex)
- Model
- View
- Controller
- Model의 데이터를 View에 전달하여 화면에 표시 (비즈니스 로직)