tgoop.com/android_live/635
Last Update:
ββDependency Injection vs Service Locator
#patterns
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡΡ ΠΎ ΡΠ°Π·Π½ΠΈΡΠ΅ ΡΡΠΈΡ
Π΄Π²ΡΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ². ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ, ΡΠ΅ΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ»ΠΈ ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ β ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΡΠ²ΡΠ·Π½ΠΎΡΡΡ ΡΠ°Π·Π½ΡΡ
ΡΡΠ°ΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π΄Π°ΡΡ Π½Π°ΠΌ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π΅ΡΡ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ², ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
.
Π₯ΠΎΡΠΎΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² Π½Π°ΡΡΠ» Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
π’ Π΅ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°ΡΡ DI ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, ΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ ΡΠ»ΠΎΠ²ΠΎ Β«ΠΎΡΠ΄Π°Π²Π°ΡΡΒ». Π Π² ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ DI ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄Π°ΡΠΌ Π½ΡΠΆΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΊΠ»Π°ΡΡΡ House
Π½ΡΠΆΠ½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Door
ΠΈ Window
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΅ΠΌΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. val window = Window()
val door = Door()
val house = House(window, door)
DI ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π½Π°ΠΌ ΠΊΠ΅ΠΌ-ΡΠΎ. Π Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Π³Π΄Π΅ ΡΡΠΎΡ ΠΊΡΠΎ-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±Π΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ, ΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ DI ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π° Π½Π΅ setter.
π΅ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Service Locator ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, ΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ ΡΠ»ΠΎΠ²ΠΎ Β«Π²Π·ΡΡΡΒ». Π’Π°ΠΊ, ΠΈ Π΅ΡΡΡ: Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠ»Π°ΡΡ (Π»ΠΎΠΊΠ°ΡΠΎΡ, ΡΠ°Π±ΡΠΈΠΊΠ°) Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Π±Π΅ΡΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅, ΠΌΡ Π²ΠΎΠ·ΡΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° House
Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π»ΠΎΠΊΠ°ΡΠΎΡΠ° ΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π°Π»ΡΡΠ΅. val house = serviceLocator.get(House::class)
Π’ΠΎ Π΅ΡΡΡ Π»ΠΎΠΊΠ°ΡΠΎΡ β ΡΡΠΎ Π½Π΅ΠΊΠ°Ρ ΡΠ°Π±ΡΠΈΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡ
ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΡΠ΅ΠΌΡ Π»ΠΎΠΊΠ°ΡΠΎΡΡ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΊΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π½Π΅Π³ΠΎ, Π΅Π³ΠΎ Π³Π»Π°Π²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Dagger, Hilt, Koin, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ±Π° ΡΡΠΈΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π² ΡΠ²ΡΠ·ΠΊΠ΅, Ρ
ΠΎΡΡ ΡΡΠΎ ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄. ΠΠΎ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ β ΡΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π²Π΅Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΏΠ»ΡΡΡ, Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ².
BY Android Live π€

Share with your friend now:
tgoop.com/android_live/635