Created
May 10, 2018 03:06
-
-
Save masamichiueta/def9f3d5f71bb80fe7dd0a0349a7b9f6 to your computer and use it in GitHub Desktop.
Dependency Resolver based on DIKit
This file contains 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
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