Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

DailyCode

[Swift] MVC 패턴 본문

아키텍처

[Swift] MVC 패턴

JSKoder 2023. 3. 13. 21:16

"Model - View - Controller"로 구성된 디자인 패턴은 컨트롤러가 중심이 되어 뷰와 모델에게 각각 필요한 요청을 받아 임무를 수행합니다.

Swift에서는 컨트롤러와 뷰가 합쳐진 ViewController 동작하며, 이로 인해 ViewController 필연적으로 비대해질 있습니다.

1.1 구조

Model: 앱의 뼈대, 앱의 데이터가 있는 곳

    • Business Logic, Extension, Network, Database 등으로 구성됩니다.
    •  Business Logic 모델에 포함되어야 하며, 처리되는 객체의 상태값을 변화시키기 위해서는 Notification, KVO, Delegate 등으로 통신해야 합니다

View: UIView 하위 객체들의 집합소 - 즉 시각적 표현,  Delegate, DataSource 등으로 ViewController와 연결

  • UIView 하위 클래스 (button, UILabel ), UIKit/AppKit, Core Animation, CoreGraphics 등으로 구성됩니다.

Controller: 사용자와 시스템 간의 연결 고리

  • 사용자 요청이 들어오면 비즈니스 로직에 데이터 요청을 하고, 비즈니스 로직은 데이터를 바인딩합니다.
  • 그리고 뷰에 데이터로 업데이트를 요청합니다.

1.2 설계 방법

  1. 첫번째 설계 방법은 컨트롤러에서 비즈니스 로직과 업데이트를 전부 처리하는 것입니다.
  2. 두번째 설계 방법은 비즈니스 로직을 모델로 분리하고, 컨트롤러에서 요청하면 비즈니스 로직을 거쳐 데이터를 바인딩한 뷰에 업데이트하는 것입니다.

1.3 장단점

장점

  • 첫번째 설계 방법은 설계가 쉬워지는 장점이 있습니다.
  • 두번째 설계 방법은 비즈니스 로직과 뷰가 분리되어 테스트가 쉬워지는 장점이 있습니다.

단점

  • 첫번째 설계 방법은 컨트롤러에서 View 모델을 모두 처리하여 유닛 테스트가 어려워지는 단점이 있습니다.
  • 두번째 설계 방법은 설계가 어려워지는 단점이 있습니다.
  • 공통적인 단점으로는 비즈니스 로직으로 처리가 불가능한 로직의 경우에도 컨트롤러에 들어가게 되므로, 컨트롤러가 비대해질 가능성이 높아지며, 컨트롤러가 비대해질 경우 관리가 어려워진다는 점입니다.

'아키텍처' 카테고리의 다른 글

[Swift] MVVM 패턴  (0) 2023.03.14