Инициализировать класс Kotlin менее зависимым способом
У меня есть следующие файлы:
application.conf
code {
length: 1
length: ${?CODE_LENGTH}
}
config.kt
data class Code(val length: Int)
data class ApplicationConfig(val codeConfig= Code)
fun loadConfig(getFile: () -> String): ApplicationConfig {
val config by lazy {
ConfigFactory.parseString(loadResource(getFile())).resolve()
}
return ApplicationConfig(
codeConfig = config.extract("code")
)
Main.kt
fun main()
{
val config = loadConfig { configFile }
val app = ServerFilters
.then(ServerFilters.CatchLensFailure)
.then(Registry().route())
app.asServer(Netty(8080)).start()
}
ComponentClass.kt
class ComponentClass(codeConfig: CodeConfig){
fun abc(config:CodeConfig)
}
Мне нужна конфигурация кода внутри функции abc.
Registry.kt
class Registry{
fun route()={
new ComponentClass(??)
}
}
Я хочу инициализировать ComponentClass здесь, но для этого мне нужно передать CodeConfig, который загружается в Main.kt. Есть ли способ использовать какую-то функцию более высокого порядка для инициализации ComponentClass и сделать менее зависимым или каким-либо образом я хочу инициализировать класс отсюда, как я могу передать конфигурацию из Route.kt
Я не хочу делать Registry(). Route(CodeConfig) или Registry(CodeConfig).route(). Можно ли это сделать лучше?