The Delegate Design Pattern

Woozoo·2022년 12월 17일
0
post-custom-banner

만약에 UITextField 라는 구조를 만들던 상황이라고 가정해보자

UITextField 라는 클래스를 만들 때 이걸 만들던 사람들은
어떤 클래스에서 UITextField를 쓸 건지 모른다!

그래서 UITextField의 기능들을 대리해서 처리해줄 방법으로
delegate 프로토콜을 채택해 위임해서 기능들을 사용하게 되는 것이

Delegate Design Pattern

protocol AdvancedLifeSupport {
	func performCPR()
}

class EmergencyCallHandler {
	var delegate: AdvancedLifeSupport?
	
	func assessSituation() {
    	print("Can you tell me what happened?")
    }
    
    func medicalEmergency() {
    	delegate?.performCPR()
    }
}

struct Paramedic: AdvancedLifeSupport {

	init(handler: EmergencyCallHandler) {
    	handler.delegate = self
    }
	func performCPR() {
    	print("The paramedic does ches compressions, 30 per second.")
    }
}

class Doctor: AdvancedLieSupport {
	
    init(handler: EmergencyCallHandler) {
    	handler.delegate = self
    }
    
    func performCPR() {
    	print("The doctor does chest compressions, 30 per second.")
    }
    func useStethescope() {
    	print("Listening for heart sounds")
    }
}

class Surgeon: Doctor {
	override func performCPR() {
    	super.performCPR()
        print("Sings staying alive")
    }
}

let emilio = EmergencyCallHandler()
let pete = Paramedic(handler: emilio)

let angela = Surgeon(handler: emilio)

emilio.assessSituation()
emilio.medicalEmergency()
profile
우주형
post-custom-banner

0개의 댓글