主题
委托模式(Delegate)
委托模式是一种设计模式,通过协议定义回调接口,实现对象间的通信和行为定制。
定义委托协议
先定义一个协议,声明委托方法:
swift
protocol TaskDelegate: AnyObject {
func taskDidFinish()
}
使用 AnyObject
限制协议只能被类遵循,方便弱引用避免循环引用。
实现委托协议
被委托类实现协议:
swift
class Worker {
weak var delegate: TaskDelegate?
func startTask() {
print("任务开始")
// 任务执行完毕,通知委托
delegate?.taskDidFinish()
}
}
委托者遵循协议
委托者实现协议方法:
swift
class Manager: TaskDelegate {
func taskDidFinish() {
print("任务完成,收到通知")
}
}
let manager = Manager()
let worker = Worker()
worker.delegate = manager
worker.startTask()
// 输出:
// 任务开始
// 任务完成,收到通知
委托模式解耦发送者和接收者,提高代码灵活性和可维护性。