Architecture Pattern - MVC

o2k_iOS·2025년 3월 31일

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
    • 사용자의 정보를 표시하기 위한 UI요소 포함
  • Controller
    • Model의 데이터를 View에 전달하여 화면에 표시 (비즈니스 로직)
profile
느려도 조금씩 성장

0개의 댓글