Objective-C的代理模式

代理模式是Objective-C中广泛使用的设计模式,可以实现对象之间的松耦合。

代理模式简介

代理模式中包含两个对象:代理对象和委托对象。

  • 委托对象将任务委托给代理对象去完成。
  • 代理对象实现代理协议,来实现实际操作。

这样可以将耦合性降低,提高灵活性。

代理模式示例

以NSURLSession为例,它定义了一个委托协议NSURLSessionDelegate。

Session对象将代理方法委托给Delegate:

// 创建会话对象
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:queue];

// Delegate实现代理方法
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
  // 请求完成时调用  
}

优点

代理模式的优点:

  • 解耦对象之间的关系
  • 提高类的可扩展性
  • 符合单一职责原则

使用场景

Objective-C中的许多系统类都使用了代理模式,如NSURLSession、UIApplication等。

掌握代理模式可以编写出更灵活、可维护的代码。