protocol AuthorServiceProtocol { func fetchAllAuthors() -> [Author] } class AuthorWebService: AuthorServiceProtocol { func fetchAllAuthors() -> [Author] { // fetch and return authors } } class AuthorViewModel { private let service : AuthorServiceProtocol init(service: AuthorServiceProtocol = AuthorWebService()) { self.service = service } func allAuthors() -> [Author] { service.fetchAllAuthors() } }