JosephCha의 개발일지

MVC 패턴 본문

iOS

MVC 패턴

JosephCha 2021. 11. 22. 11:51
반응형

우선, 디자인 패턴을 사용하는 이유

  1. 디자인 패턴이란 프로그램 개발 시, 자주 마주하는 애로 상황에 대한 일반적이고 재사용 가능한 추상화된 해결책.
  2. 고, 편리하게 프로그램을 개발, 유지보수, 그리고 모든 이들과 공유하기 위한 규약.

Model, View, Controller

* All images were provided from CS193P, Introduction to IOS Development - Stanford University

쉽게 생각해서, MVC는 무엇(Model)을 어떻게(Controller) 보여줄(View) 것인가 입니다.

Model

  1. 데이터와 관련된 객체, 데이터를 관리하는 로직(비즈니스 로직) 포함.
  2. Controller와 직접적으로 연결.
  3. KVO(Key Value Observation)를 통해, Model의 변경사항이 있을 때, Controller에게 알림. (윗 그림 참고)
  4. View와 직접적으로 연결되면 안됨.
  5. 재사용성 강조됨.
  6. 종류 
  • 데이터로 사용하는 구조체
  • 네트워크 로직
  • persistance 로직 (ex. 로컬파일에 저장된 데이터)
  • 데이터 파싱 로직 (PKCS parser, 증명서 parser)
  • Manager 객체

View

  1. UIView를 상속해 만들어진 서브 클래스들 (UI 컴포넌트).
  2. Controller와 직접적으로 연결.
  3. Delegate 패턴을 통해 사용자의 상호작용(ex. 테이블뷰 셀 터치)으로 인한 정보를 Controller에게 알림. (윗 그림 참고.)
  4. Model과 직접적으로 연결되면 안됨.
  5. 재사용성 강조.

Controller

  1. View와 Model의 중간 역할
  2. Model로 부터 데이터 가져옴.
  3. View의 Life Cycle을 관리.
  4. 재사용성이 적다. ㅠ

장점

  1. 비교적 간단하고 익숙한 패턴이라, 구조파악 및 구현을 쉽고 빠르게 할 수 있다. (간단한 프로젝트에 용이)

단점

  1. Controller가 View의 Life Cycle를 관리하기 떄문에, 이 둘을 분리하기 어렵다. 그래서 재사용성이 떨어지고, 단위 테스트가 힘들다.(MVVM을 사용하는 이유)
  2. 네트워크 통신 로직, 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