mam jedną klasę z metod statycznych: ta klasa owija połączenia do API Twitteradwóch klas, zwrotna i testów jednostkowych
W drugiej klasie, mam pewną logikę biznesową.
Ze względu na zachowanie asynchroniczności niektórych metod w klasie opakowania, mam trudności z zaprojektowaniem komunikacji. Oto co zrobiłem:
APIManager.swift
public class APIManager {
class func getPermission(callback :() -> Void) {
let accountStore = ACAccountStore()
let accountType =
ACAccountStore().accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter)
let callbackRequestAccess = { (granted: Bool, error: NSError!) -> Void in
...
if(granted) {
callback()
}
}
accountStore.requestAccessToAccountsWithType(setAccountType,
options: nil, completion: callbackRequestAccess)
}
}
Welcome.swift
public class Welcome {
public func checkPermission() {
APIManager.getPermission(getTweet)
}
public func getTweet() {
...
}
}
nie jestem pewien, że ten projekt w prawo czy nie. Nie chcę mieć silnego powiązania między tymi klasami, dlatego używam wywołania zwrotnego.
Czy to klasyczny wzór? Co więcej, nie mam ochoty takie zachowanie będzie łatwe do przetestowania?