반응형
Notice
Recent Posts
Recent Comments
Link
Today
Total
07-05 05:44
«   2024/07   »
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
관리 메뉴

iOS 개발 기록 블로그

iOS(Swift) Design Pattern: MVC (Model View Controller) 1편 본문

iOS

iOS(Swift) Design Pattern: MVC (Model View Controller) 1편

crazydeer 2022. 5. 21. 09:00
반응형

MVC 디자인 패턴 이미지: https://developer.mozilla.org/ko/docs/Glossary/MVC

 

iOS App 프로그래밍에서 정말 정말 중요한 디자인 패턴 MVC를 알아보자.

우선 이 MVC나 MVVM 등 애플이 채택(?)한 디자인 패턴은

대부분의 채용에 필수요건으로 포함되어 있다.

그만큼 이것은 정말 중요한 개념이라는 것이다.

 

디자인 패턴

디자인 패턴이란 프로그래밍에서 흔한 문제들의 증명된 솔루션이라고 볼 수 있다.

말이 어려운데 지금부터 자세히 파헤쳐보겠다.

 

소프트웨어는 일반적으로 복잡하다.

다음 글(2편)에서 이 디자인 패턴을 적용할 Quizzler라는 프로젝트에 대해 간단히 설명하자면

여러 퀴즈를 내고 사용자가 진실 혹은 거짓을 선택하는 단순한 문제 풀이 앱이다.

지금까지와 마찬가지로 ViewController라는 파일 내에서

퀴즈 데이터, 퀴즈 로직, UI 요소 등 모두 다뤘다.

하지만 퀴즈의 수가 100개 이상 무수히 늘었다고 가정해보자.

코드는 길어지고 복잡해 보일 것이다.

 

이렇게 복잡한 소프트웨어를 효율적으로 동작하게 하기 위해서

이미 많은 프로그래머들이 고안해낸 것이 바로 디자인 패턴이다.

 

종류

이미 수많은 디자인 패턴들이 있다.

Singleton, Memento, Delegate, Facade, MVVM, MVC, VIPER, MVP 등

디자인 패턴은 architecture blueprint와 비슷하다.

 

Requirement Based (필요에 따라)

북극에 살아 이글루에 살아야 한다고 가정하면 이글루 건축 설계도면이 필요하다.

나무집이 필요하면 나무집 설계도, 빌딩이 필요하면 그에 맞는 설계도가 필요하다.

프로그래밍에서도 마찬가지로 각각 상황에 맞는 디자인 패턴들이 존재한다.

 

Style Based (생김새에 따라)

불규칙적인 창문을 가진 핑크색의 집, 민트색의 이층 집 등

 

한 프로그래머는 몇 줄의 코드를 필요로 하고

다른 프로그래머들은 그 코드가 되도록 읽기 쉬웠으면 한다.

 

모바일 앱에서 일반적으로 많이 쓰이고

애플이 사용하기로 정한 디자인 패턴을 알아보자.

 

 

MVC : Model, View, Controller

그 중 하나가 MVC, Model View Controller이다.

우리 프로젝트에 3가지 주요 구성요소들이 있다.

Model, View, Controller

 

Model, 모델

데이터와 로직을 다룬다.

 

View, 뷰

유저 인터페이스로 사용자와의 상호작용을 다룬다.

 

Controller, 컨트롤러

중재자(Mediator) 역할을 한다. (Conductor, 전도체)

 

 

과정

  1. 뷰를 통해 사용자는 UI 요소를 탭 한다. (예를 들어 버튼)
  2. 뷰는 컨트롤러로 입력 이벤트를 보낸다.
  3. 컨트롤러는 그걸 해석(Interpret)하여 모델에게 데이터를 요청한다.
  4. 모델은 비즈니스 로직 또는 데이터 처리를 하여 컨트롤러에게 보낸다.
  5. 컨트롤러는 UI로 띄울 수 있도록 가공하여 뷰로 보낸다.

 

특징

뷰는 절대로 모델과 직접 소통하지 않는다.

반드시 컨트롤러를 통하고 소통한다.

 

 

장점

왜 이 패턴이 앱 프로그래밍에서 유용할까?

왜 뷰와 모델은 분리되어 동작해야 할까?

 

새로운 퀴즈 앱을 만든다고 생각해보자.

독일어, 영어, 일본어, 과학 등의 여러 데이터 형태가 생긴다고 하면

하나하나 ViewController.swift나 Main.storyboard에서 수정하지 않고

데이터만 바꾸면 된다.

 

  1. 즉, MVC 패턴은 코드 재사용에 아주 탁월하다.
  2. 모듈화하기 위해 컴포넌트를 분리시킬 때 에러를 줄여준다.
  3. 코드를 이해하기 쉬워진다. (특히 협업 시)

 

2편에서 실제 프로젝트에 MVC 디자인 패턴을 적용해볼 것이다.

 

 

참고

안젤라유 강의: https://www.udemy.com/course/ios-13-app-development-bootcamp/

 

iOS & Swift - The Complete iOS App Development Bootcamp

From Beginner to iOS App Developer with Just One Course! Fully Updated with a Comprehensive Module Dedicated to SwiftUI!

www.udemy.com

 

반응형