Created
October 30, 2015 01:15
-
-
Save justinmakaila/70c419bf616355ff6c48 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Protocol oriented design example | |
| protocol Endpoint { | |
| var method: String { get } | |
| var path: String { get } | |
| var body: [String: AnyObject] { get } | |
| } | |
| func request(endpoint: Endpoint) { | |
| APIClient.request(endpoint.path, method: endpoint.method); | |
| } | |
| struct GithubEndpoint: Endpoint { | |
| var method: String { | |
| return "GET" | |
| } | |
| var path: String { | |
| return "/users" | |
| } | |
| var body: [String: AnyObject] { | |
| return [:] | |
| } | |
| } | |
| let endpoint = GithubEndpoin() | |
| request(endpoint) | |
| // Optionals | |
| func createPerson(name: String, nickname: String?) -> Person { | |
| return Person(name: name, nickname: nickname!) | |
| } | |
| func createPerson(name: String, nickname: String) -> Person { | |
| return Person(name: name, nickname: nickname); | |
| } | |
| struct Person { | |
| let name: String | |
| let nickname: String! | |
| init(name: String, nickname: String) { | |
| self.name = name | |
| self.nickname = nickname | |
| } | |
| init(name: String) { | |
| self.name = name | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment