https://howtoinswift.tech/blog/iOS/All-iOS-Design-patterns-you-should-know
1. MVC (Model - View - Controller)
MVC는 UI에서 data의 표현을 분리하는 software architecture 패턴이다. iOS에서 MVC는 code를 구성하고 concern들을 분리해내는데 쓰인다.
제일 대표적인 예시가 UIViewController이며 MVC에서 Controller에 해당한다.
2. Delegation
특정 object가 다른 object와 소통하기 위해 쓰이는 design 패턴이다. iOS에서 delegate 패턴은 object들 사이에서 control과 data를 주고 받기 위해 사용된다.
대표적인 예시는 UITableView 클래스이며, UITableView에서 delegate 패턴은 cell들의 display를 관리하기 위해서 사용된다.
let tableView = UITableView()
tableView.delegate = self
tableView.dataSource = self
3. Singleton
singleton은 해당 클래스의 instance가 하나만 존재해야하는 경우에 사용되며 해당 instance에 대한 전역적인 access point를 제공하기 위해 사용된다. iOS에서 singleton은 database 연결, network 소켓과 같이 공유되어야하는 resource들을 관리하기 위해서 종종 사용된다.
제일 대표적인 예시는 UIApplication 클래스이며 app을 전체적으로 표현하는 singleton이다.
//iPhone 홈스크린에서 앱의 badgeIcon 숫자를 설정
UIApplication.shared.applicationIconBadgeNumber = 10
4. Observer
어떤 특정 object의 변화를 다른 object들에게 알리기 위한 design 패턴이다. iOS에선 data나 state의 변화를 object들에게 알리기 위해 사용된다.
NotificationCenter 클래스가 예시이며, 해당 클래스는 object들이 특정 event에 대한 알림을 등록할 수 있게 해준다.
//색상 변화에 대한 알림을 전송
let colorChange = Notification.Name("colorChange")
NotificationCenter.default.post(name: colorChange, object: nil)
5. Factory
Superclass에서 객체를 생성하기 위한 인터페이스를 제공하지만 subclass가 생성될 객체의 type을 변경할 수 있도록 하는 패턴이다. iOS에서 팩토리 패턴은 종종 특정 프로토콜이나 인터페이스를 준수하는 객체를 만드는 데 사용된다.
예시로는 UIView 클래스가 있다. UIView 클래스에는 nib 파일에서 뷰를 만들 수 있는 view(with:owner:)라는 factory 메서드가 있다.
let nib = UINib(nibName: "nibFileName", bundle: Bundle(for: Self.self))
let view = nib.instantiate(withOwner: self) as? UIView
'iOS > 설명' 카테고리의 다른 글
[iOS] Podfile.lock (0) | 2023.02.05 |
---|---|
[iOS] iOS에서의 Multi-Layer Architecture (0) | 2023.01.23 |
[iOS] nibName에 따른 ViewController 초기화 (0) | 2023.01.21 |
[iOS] Keyboard와 동일한 애니메이션 적용하기 (0) | 2023.01.07 |
[iOS] 앱 실행 방법에 따른 AppDelegate 호출 메서드 (0) | 2023.01.07 |
댓글