рдбреИрдЧрд░ 2 рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ (рднрд╛рдЧ 2)

рдкрд┐рдЫрд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛

рд╕рд╛рдордЧреНрд░реА

  1. рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
  2. рдбреИрдЧрд░ рдореЗрдВ рд╡рд┐рд▓рдВрдмрд┐рдд рдЖрд░рдВрднреАрдХрд░рдг
  3. рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ред рдЬрдм рдЦрдВрдЬрд░ рдЖрдкрдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ
  4. рд╕рд╛рд░ рдирд╛рдо рджрд┐рдпрд╛ред рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рдкрд╣рд▓рд╛ рднрд╛рдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреИрдЧрд░ рдЦреЗрддреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг:

class Car @Inject constructor(private var engine: Engine){ var key: Key? = null @Inject set } class Key @Inject constructor() 

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╡рд┐рдзрд┐ рдирд┐рд░реНрднрд░рддрд╛ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ

рдЦреЗрддреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:

  1. рдЕрдореВрд░реНрдд рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдб рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ
  2. рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
  3. рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдбреИрдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдХреНрд░рдо рдореЗрдВ

1. рд╣рдорд╛рд░реЗ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ, MainActivity рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ

 @Component interface DaggerComponent { fun getCar(): Car fun getEngine(): Engine fun getFuel(): Fuel fun inject(act: MainActivity) } 

2. рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ MainActivity рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рд▓реЗрдЯрдиреАрдЯ var рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рд╣реЛрдВрдЧреЗ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ)

 @Injected lateinit var car: Car 

3. рд╣рдо рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рдЬреЛрдбрд╝реЗ рдЧрдП рд╡рд┐рдзрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди () рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реА MainActivity class рдЯреНрд░реЗрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ:

 class MainActivity : AppCompatActivity() { @Inject lateinit var car: Car override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) DaggerDaggerComponent.create().inject(this) } } 

рдбреИрдЧрд░ рдореЗрдВ рд╡рд┐рд▓рдВрдмрд┐рдд рдЖрд░рдВрднреАрдХрд░рдг

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдХ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдФрд░ рдЕрдзрд┐рдХ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред рдЦрдВрдЬрд░ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ 2 рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: рдкреНрд░рджрд╛рддрд╛ <> рдФрд░ рдЖрд▓рд╕реА <>

рдкреНрд░рджрд╛рддрд╛ - рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛
рдЖрд▓рд╕реА - рдкрд╣рд▓реЗ рдХреЙрд▓ рдкрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдкрд╣рд▓реЗ рдХреИрд╢реНрдб рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ

рдЗрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд░реВрдк рдореЗрдВ "рд▓рдкреЗрдЯ" рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдкреНрд░рджрд╛рддрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

 class Engine @Inject constructor(private var fuel: Fuel){ fun start(){ if(fuel!=null){ print("Started!") }else{ print("No more fuel!") } } } class Car @Inject constructor(private var engine: Provider<Engine>){ var key: Key? = null @Inject set fun startCar(){ engine.get().start() } } class Key @Inject constructor() 

рд╣рд░ рдмрд╛рд░ рдкреНрд░рд╛рдкреНрдд () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИред

рдЖрд▓рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 class Fuel @Inject constructor() { val fuelType = if(BuildConfig.DEBUG){ "benzine" }else{ "diesel" } } class Engine @Inject constructor(private var fuel: Lazy<Fuel>){ fun start(){ if(fuel!=null){ print("Started with ${fuel.get().fuelType}") }else{ print("No more fuel!") } } } 

рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдкреНрд░рд╛рдкреНрдд () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИред

рдЪреЗрддрд╛рд╡рдиреА! рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЖрд▓рд╕реА рджреГрд╢реНрдп рдХреЗ рдкреНрд░рд╛рдкреНрдд () рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреЛрдЯрд▓рд┐рди рдХрд╛ рдЕрдкрдирд╛ рдПрдХ рдЖрд▓рд╕реА рд╡рд░реНрдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдбреИрдЧрд░ рд╡рд░реНрдЧ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ

 import dagger.Lazy 

рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ред рдЬрдм рдЦрдВрдЬрд░ рдЖрдкрдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ

рдХрдИ рдмрд╛рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЦрдВрдЬрд░ рдЖрдкрдХреЗ рдЗрд░рд╛рджреЛрдВ рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдХрд╛рд░ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЯрд╛рдЗрдк (рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдЬреЛ рдЗрд╡рд╛рдиреЛрд╡ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ

рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдлрд╝реАрд▓реНрдб рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ "рдкреНрд░реЛрд╡рд╛рдЗрдб-рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛" рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЦрдВрдЬрд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рдСрдмреНрдЬреЗрдХреНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ:

 @Module interface DaggerModul { @Binds fun bindDriver(driver: Ivanov): Driver } class Ivanov @Inject constructor(): Driver 

рдмрд╛рдЗрдВрдбрдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдШрдЯрдХ рдореЗрдВ рдЖрдкрдХреЛ рд╕рднреА рдореМрдЬреВрджрд╛ рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛

 @Component(modules = [DaggerModul::class]) interface DaggerComponent { тАж } 

рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХреЗ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рд┐рд▓реЗрдВрдбрд░ (рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреИрдЧрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХрд┐рд╕ рд╡рд░реНрдЧ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдЕрдм рддрдХ, рд╣рдордиреЗ рдПрдирдЧреЗрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдмрд╛рдд рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреИрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╡рд┐рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдПрдиреЛрдЯреЗрд╢рди рдЙрди рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рд╡рд░реНрдЧ рдХреЛ рдЖрд░рдореНрдн рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

 @Module object DaggerModuleObject { @Provides @JvmStatic fun getBoschCylinder(): Cylinder = BoschCylinder() } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдбреИрдЧрд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд▓реЗрдВрдбрд░ рдлреАрд▓реНрдб рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдмреЙрд╢ рд╕рд┐рд▓рд┐рдВрдбрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рд░ рдирд╛рдо рджрд┐рдпрд╛ ред рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг

рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпреЗ рд╢рд░реАрд░ рдФрд░ рджрд░рд╡рд╛рдЬреЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рд╣реИрдВред

рдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордпред рдореЙрдбреНрдпреВрд▓ рдХреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА "(рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛) рд░рдВрдЧ рдХрдИ рдмрд╛рд░ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИ"

 @Provides @JvmStatic fun getColorRed():Color = Color("red") @Provides @JvmStatic fun getColorBlue():Color = Color("blue") 

рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд╛рдорд╛рдВрдХрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣рдо рдбреИрдЧрд░ рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП 3 рдирдП рддрд░реАрдХреЗ рдмрдирд╛рдПрдВрдЧреЗ

 @JvmStatic @Provides fun getColor(): Color = Color("") @Provides @Named("blueColor") @JvmStatic fun getColorBlue(): Color{ return Color("blue") } @JvmStatic @Named("redColor") @Provides fun getColorRed(): Color = Color("red") 

рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЦрдВрдЬрд░ рд╡рд░реНрдЧ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рдкрде рд▓реЗрдЧрд╛ "рдПрдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдпрд╛ рдПрдХ рдкреНрд░реЛрд╡реЗрдб-рдПрдиреЛрдЯреЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"

рдирд┐рдореНрди рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИрдВред рдпрд╣ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдПрдиреЛрдЯреЗрд╢рди рдирд╛рдорд╛рдВрдХрд┐рдд рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ

 class Door @Inject constructor() { @Named("blueColor") @Inject lateinit var color:Color } class Car @Inject constructor(private var engine: Provider<Engine>, private var door: Door, var driver: Driver){ var key: Key? = null @Inject set @Inject @Named("redColor") lateinit var color: Color fun startCar(){ engine.get().start() } } class Key @Inject constructor() 

рд╕реНрд░реЛрдд рдХреЛрдб

Source: https://habr.com/ru/post/hi466769/


All Articles