Инициализировать класс 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(). Можно ли это сделать лучше?

0 ответов

Другие вопросы по тегам