본문 바로가기
iOS/설명

[iOS] iOS에서의 대표적인 Design Pattern들

by Sky Titan 2023. 1. 21.
728x90

https://howtoinswift.tech/blog/iOS/All-iOS-Design-patterns-you-should-know

 

All iOS Design patterns you should know

Design patterns are definitely something you must consider learning one day

howtoinswift.tech

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

 

728x90

댓글