티스토리 뷰
Delegate 패턴?????
객체 지향 프로그래밍에서 많이 사용되는 디자인 패턴 중 하나
객체 간의 상호작용을 할 때 사용함
위임하는 객체와 대리하는 객체로 구성됨
대리자 객체는 위임자 객체에서 호출이 가능한 메서드를 구현함
이를 호출하는 위임자 객체는 대리자 객체의 메소드를 대신 호출함
객체산 결합도를 낮출 수 있고, 유연하고, 확장 가능한 코드를 작성할 수 있게 됨
Swift에서 Delegate 패턴을 사용하는 방법
1. 프로토콜 정의하기
protocol SomeDelegate: AnyObject {
func someMethod()
}
2. 위임자 객체 생성하기
class SomeClass {
var delegate: SomeDelegate?
func someMethod() {
delegate?.someMethod()
}
}
3. 대리자 객체 생성하기
class delegateClass: SomeDelegate {
init(someClass: SomeClass) {
someClass.delegate = self
}
func someMethod() {
print("실제 해야할 일들을 수행합니다")
}
}
4. 사용하기
let someClass = SomeClass()
let delegateClass = DelegateClass(someClass: someClass)
someClass.someMethod() // 실제 해야할 일들을 수행합니다
혹은 다음과 같이 사용할 수도 있음
class DelegateClass: SomeDelegate {
func someMethod() {
print("실제 해야할 일들을 수행합니다")
}
}
let someClass = SomeClass()
let delegateClass = DelegateClass()
someClass.delegate = delegateClass
someClass.someMethod() // 실제 해야할 일들을 수행합니다
Delegate 패턴의 장단점
장점
- 객체간의 의존성을 낮출 수 있음
- 코드의 재사용성과 유지보수성 향상
단점
- 코드가 복잡해질 수 있음
- 런타임 오버헤드 발생할 수 있음(미미함)
고려해야 할 사항
- 정말 Delegate 패턴이 적합한지 여부를 판단할 것
- 프로토콜을 최대한 단순하게 정의할 것
'programming > Swift' 카테고리의 다른 글
[Swift/iOS] 메모리 안전성 Memory Safety From 공식문서(2) (0) | 2023.05.05 |
---|---|
[Swift/iOS/디자인패턴] 퍼사드 Facade 패턴 (0) | 2023.05.03 |
[Swift/iOS] 메모리 안전성 Memory Safety From 공식문서(1) (0) | 2023.04.28 |
[Swift/iOS] In-Out Parameters From 공식문서 (0) | 2023.04.27 |
[Swift/iOS] 캡쳐리스트 Capture List , 탈출 클로저 escaping Closure, 자동클로저 AutoClosure from 공식문서 (0) | 2023.04.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- weak
- 강한참조순환
- 강한 참조 순환
- core data
- ios
- escaping closrue
- object
- 클로저
- 클로저표현
- 디자인패턴
- Core Data Stack
- authorizationCode
- Delegate 패턴
- 클로저 강한 참조
- 자동클로저
- Entity
- unowned
- autoclosure
- 메모리 안정성
- CoreData
- ASAuthorizationAppleIDCredential
- SWIFT
- 토큰저장
- inout 파라미터 메모리 충돌
- 회원가입
- 캡쳐리스트
- identity Token
- Persistent Container
- 클로저 축약
- context
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함