Slide 81
Slide 81 text
protocol DataSourceCacheStrategy {
func retrieve(from: [DataSource], using: DataSource -> T?) ->
T?
}
struct DataSourceCache {
let strategy: DataSourceCacheStrategy
let localDataSource: DataSource
let remoteDataSource: DataSource
func fetch(applyFunction: DataSource -> T?) -> T? {
let sources = [localDataSource, remoteDataSource]
return strategy.retrieve(sources, using: applyFunction)
}
}