Skip to content

Instantly share code, notes, and snippets.

@JiLiZART
Created April 18, 2017 08:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JiLiZART/d072b3cc9a8d181234f4f374bb5eda09 to your computer and use it in GitHub Desktop.
Save JiLiZART/d072b3cc9a8d181234f4f374bb5eda09 to your computer and use it in GitHub Desktop.
import Foundation
class ImageProvider {
typealias Dependencies = HasPersistanceProvider
let dependencies: Dependencies
init(dependencies: Dependencies) {
self.dependencies = dependencies
dependencies.persistanceProvider.store()
}
}
class ArticlesProvider {}
class PersistanceProvider {
func store() {
}
}
protocol HasImageProvider {
var imageProvider: ImageProvider { get }
}
protocol HasArticleProvider {
var articleProvider: ArticlesProvider { get }
}
protocol HasPersistanceProvider {
var persistanceProvider: PersistanceProvider { get }
}
class FooCoordinator {
typealias Dependencies = HasImageProvider & HasArticleProvider
let dependencies: Dependencies
init(dependencies: Dependencies) {
self.dependencies = dependencies
}
}
struct AppDependency: HasImageProvider, HasArticleProvider, HasPersistanceProvider {
let imageProvider: ImageProvider
let articleProvider: ArticlesProvider
let persistanceProvider: PersistanceProvider
}
struct ImageProviderDependency: HasPersistanceProvider {
let persistanceProvider: PersistanceProvider
}
let articleProvider = ArticlesProvider()
let persistanceProvider = PersistanceProvider()
let imageProviderDeps = ImageProviderDependency(persistanceProvider: persistanceProvider)
let imageProvider = ImageProvider(dependencies: imageProviderDeps)
let appDeps = AppDependency(imageProvider:imageProvider, articleProvider:articleProvider, persistanceProvider:persistanceProvider)
let coordinator = FooCoordinator(dependencies: appDeps)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment