Skip to content

Instantly share code, notes, and snippets.

@masamichiueta
Created May 10, 2018 03:06
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 masamichiueta/def9f3d5f71bb80fe7dd0a0349a7b9f6 to your computer and use it in GitHub Desktop.
Save masamichiueta/def9f3d5f71bb80fe7dd0a0349a7b9f6 to your computer and use it in GitHub Desktop.
Dependency Resolver based on DIKit
import Foundation
class HogeViewModel {
let d1: String
let d2: String
let d3: String
init(d1: String, d2: String, d3: String) {
self.d1 = d1
self.d2 = d2
self.d3 = d3
}
}
protocol DependencyResolvable {
func provideD1() -> String
func provideD2() -> String
}
extension DependencyResolvable {
func resolveD1() -> String {
return provideD1()
}
func resolveD2() -> String {
return provideD2()
}
func resolveHogeViewModel(dynamicDependency: String) -> HogeViewModel {
return HogeViewModel(d1: resolveD1(), d2: resolveD2(), d3: dynamicDependency)
}
}
class DependencyResolver: DependencyResolvable {
func provideD1() -> String {
return "This is d1"
}
func provideD2() -> String {
return "This is d2"
}
}
let resolver: DependencyResolvable = DependencyResolver()
let hoge = resolver.resolveHogeViewModel(dynamicDependency: "This is d3")
print(hoge.d1, hoge.d2, hoge.d3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment