В моем приложении я получу различные запросы из одного источника, моя задача - перенаправить запрос их конкретному обработчику. так как мое приложение использует кинжал, я не могу направить запрос во время выполнения.
data class MyRequestObj(type : Int, someInfo : String)
Данный класс является объектом запроса, который я отправляю на маршрут
interface RequestHandler{
fun performRequest(someInfo : String)
}
Приведенный выше интерфейс я буду расширять во всех классах обработчиков.
class Handler1 : RequestHandler{
@Override
fun performRequest(someInfo : String){
}
}
class Handler2 : RequestHandler{
@Override
fun performRequest(someInfo : String){
}
}
Указанные выше классы обработчиков, которые реализуют RequestHandler
class Router @Inject constructor(handler1 : Handler1, handler2 :Handler2) {
fun routeRequest(request : MyRequestObj){
when(request.type){
TYPE1 -> handler1.performRequest(request.someInfo)
TYPE2 -> handler2.performRequest(request.someInfo)
}
}
}
Приведенный выше класс направляет запрос, моя проблема в том, что я не хочу вставлять все свои обработчики в конструктор, мне нужно внедрить их во время выполнения, используя @ Named в кинжале или любым другим способом на основе по своему типу.
Может ли кто-нибудь помочь мне с этим.