Я пытаюсь обернуть голову вокруг Dagger2. У меня возникают проблемы с пониманием того, как я могу предоставить параметр для зависимости, которая используется во всем приложении. Вот что я придумал (это просто фиктивные классы, которые я использую, чтобы я мог понять концепции):
class Token(val token: String)
class File @Inject constructor(@param:Named("token") val token: Token)
@Component(modules = arrayOf(SessionModule::class))
interface SessionManager {
fun file(): File
}
@Module
class SessionModule {
@Provides @Singleton fun provideToken(token: String) = Token(token)
}
Вот в чем дело:
Я хочу, чтобы provideToken
был одноэлементным, поэтому один и тот же токен всегда предоставляется для людей, запрашивающих сеанс. Но я также хочу иметь возможность обновлять токен, если это необходимо. Как бы я это сделал? Я думал о создании статической переменной, которая содержит токен внутри класса SessionModule
, но я думаю, что это может очень быстро привести к появлению спагетти-кода.