单例上的多个类方法可以避免子类?

时间:2014-02-07 05:56:36

标签: objective-c cocoa design-patterns afnetworking

我已经将AFNetworking的AFHTTPSessionManager子类创建了我自己的http客户端,我编写了很多类别,实用程序方法,oauth2,重试登录等等。

我有这种方法来创建sharedSession

+ (MTHTTPClient *)sharedSession {
  static MTHTTPClient *sharedSession = nil;
  static dispatch_once_t onceToken;

  dispatch_once(&onceToken, ^{
    NSURL *baseURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@:%@", kABXMyAppProtocol, kABXMyAppHost, kABXMyAppPort]];
    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
    ...
  });

  return sharedSession;
}

一切都很好。

现在我有这个要求创建另一个客户端,但只有不同的NSURLSessionConfiguration,用于后台下载/上传。

我想保留围绕此http客户端构建的所有细节和类别。

我不确定如何继续,建立另一个类(或单个子类,有点气味)似乎不太可行,因为我需要重复的逻辑数量。

如上所示创建另一个实例方法会有效吗?我的理解是,单身人士的目的是只保留一个班级的一个实例,所以这可能是一个坏主意或根本不工作。

1 个答案:

答案 0 :(得分:0)

是的,创建另一个单身人士真是太酷了。单身人士并没有什么神奇之处,它只是你创建和重复使用的一个实例。你可能有一个或一千个。只要它们存储在不同的static变量中,您就可以了。