디자인 패턴이란 소프트웨어 개발 방법을 공식화한 것입니다.
지금은 매우 다양한 디자인 패턴이 사용되고 있지만 ( MVVM, MVP, VIPER )
그 중에서 가장 고전적이고 중요한 MVC 패턴에 대해서 다루겠습니다.
MVC 패턴
Model
: 근본적인 앱이 어떻게 구성되어야 하는가? 에 중점을 가집니다. 알고리즘 ( 계산기 더하기, 빼기 연산 등 )
Controller
: 모델에서 데이터를 가져오고, 뷰에 전달하는 역할을 합니다. MVVM 구조에서는 Model 에서 가져오는 역할을
ModelView 가 대신 수행합니다.
View
: 화면을 보여주는 역할을 합니다. 기본적으로 데이터를 가지고 있지 않습니다.
Controller & View 소통
→ Action-target 이라는 방식으로 가능합니다. @IBAction, @IBOutlet 이라는 어노테이션을 붙여서 소통합니다.
@IBAction 은 특정 이벤트가 발생하면 View 에서 Controller 에게 알려줍니다, ( 뷰 → 컨트롤러 )
@IBOulet 은 View 에 인스턴스로 연결합니다. 또한 데이터를 지정하는 역할을 합니다. ( 컨트롤러 → 뷰 )
위 보다 복잡한 방법은 Delegation 패턴을 사용합니다. ( delegation, datasource )
Controller & Model 소통
→ Model 이 네트워킹을 통해 데이터를 가져오거나, 또는 값이 변경되었을 때 일방적으로 Controller 에게 알려줄 수 있는
방법이 없습니다. 이 때는 KVO 를 사용합니다. Key Value Observing 를 사용하면 A 객체의 프로퍼티가 변경되었을 때,
B 객체에서 변화를 감지 할 수 있습니다.
어플리케이션을 구성하는 MVC 패턴
기본적으로 어플은 다수의 MVC 패턴의 조합으로 만들어집니다.
여기서 중요한 것은 MVC 는 또 다른 MVC 의 View 일부로만 동작한다는 점입니다.
출처: https://opentutorials.org/course/697/3828 생활코딩, https://www.youtube.com/channel/UCLYEAsot_ImovDAsBmhAbOA/videos 스탠퍼드 IOS 강의
'iOS Dev > Architecture' 카테고리의 다른 글
iOS MVVM 패턴 구현 정리 ( with RxSwift ) (2) | 2021.05.17 |
---|