dependency injection ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅
Dependency injection
ΠΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΎΡ Jakob Jenkov, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈΠ»ΠΈ DI. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π° ΡΠ΅ΡΠΈΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π² Π½Π΅ΠΉ Π°Π²ΡΠΎΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ½ΡΡΠΈΠΉ ΠΊΠ°ΠΊ Β«Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΒ», Β«Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉΒ», Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉΒ», ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ DI-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Spring), ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΠ΅Π» ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ DI-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅Π»ΡΠ½ΡΠΌ Π²Π·Π³Π»ΡΠ΄ΠΎΠΌ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ·Π½ΡΡΡΠΈ ΠΈ ΠΈΠ·Π²Π½Π΅ (DI). ΠΠΎ ΡΠΌΡΡΠ»Ρ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΡΠ°ΡΡΡ Jakob Jenkov Understanding Dependencies, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ ΠΏΠΎΠ½ΡΡΠΈΡ Β«Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΒ» ΠΈ ΠΈΡ ΡΠΈΠΏΠ°ΠΌ.
Π‘Π΅ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈ
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
Β«ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉΒ» β ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² ΡΡΠ°ΡΡΠ΅ ΠΠ°ΡΡΠΈΠ½Π° Π€Π°ΡΠ»Π΅ΡΠ° Inversion of Control Containers and the Dependency Injection Pattern. ΠΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΡΡΠ°ΡΡΡ, Π½ΠΎ ΠΎΠ½Π° ΡΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΠ· Π²ΠΈΠ΄Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ Ρ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ β Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅ΠΊΡΡΠ°Ρ .
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β ΡΡΠΎ ΡΡΠΈΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π°Π΄Π°ΡΡΡΡ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΡΠ½ΠΎΡΡΡΡ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. DI β ΡΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΠ°ΠΌΠΎΠ½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
UPD: ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π°Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π° Ρ flatscode ΠΈ fogone, Ρ ΠΏΡΠΈΠ½ΡΠ» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΎΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΠ΄Π΅. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π·Π°ΠΌΡΡΠ΅Π» Π±ΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠΎΠ³Π°ΡΡ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠ² ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π½ Π°Π²ΡΠΎΡΠΎΠΌ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π°Π²ΡΠΎΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π² ΡΠΏΠΎΡΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Β«Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅Β», Π½ΠΈΠΆΠ΅ Π΄Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ.
ΠΡΠΎΡ DAO (Data Access Object), MyDao Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ javax.sql.DataSource Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΠ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Person.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΊΠ»Π°ΡΡ MyDao ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ DataSourceImpl, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅ Π΄Π°Π½Π½ΡΡ . Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ MyDao Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ DataSource, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π΅Π³ΠΎ. ΠΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ DataSource. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, MyDao ΠΈΠΌΠ΅Π΅Ρ Β«Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΒ» ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DataSource ΠΈ ΠΎΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ»Π°ΡΡ MyDao ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ DataSourceImpl ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DataSource. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠ»Π°ΡΡ MyDao ΡΠ°ΠΌ Β«ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΒ». ΠΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ MyDao Π·Π°Π²ΡΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡ DataSourceImpl ΠΈ ΠΎΡ ΡΠ΅ΡΡΡΠ΅Ρ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°Π΄Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ DataSourceImpl. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅ΡΡΡΠ΅Ρ ΡΡΡΠΎΠΊ, Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DataSource Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π³ΠΈΠ±ΠΊΠΈΠΌ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΠΈΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ. ΠΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΊΠ»Π°ΡΡ MyDao. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ DAO-ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡ Π²ΡΠ΅. Π Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ MyDao, Π·Π°ΠΌΠΎΠΊΠ°Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DataSource. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ DataSourceImpl. ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΌΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΠ»ΠΎΡ Π°Ρ ΠΈΠ΄Π΅Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½:
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° DataSourceImpl ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΡΠΎ β ΡΠ΅ΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ DataSourceImpl. Π₯ΠΎΡΡ ΠΊΠ»Π°ΡΡ MyDao Π²ΡΠ΅ Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΈΡ ΡΠ΅ΡΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΌ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ MyDao. ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Β«Π²Π½Π΅Π΄ΡΡΡΡΡΡΒ» Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ MyDao. ΠΡΡΡΠ΄Π° ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ Β«Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ β ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ) Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉΒ». Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΠ, URL, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡΠΎΠΌ MyDao Π±Π΅Π· Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ. ΠΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ-ΡΠ΅ΡΡΠ΅ΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΡΡΠΌΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ Π·Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°).
ΠΠ»Π°ΡΡ MyDao ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ. Π‘Π΅ΠΉΡΠ°Ρ ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΈ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DataSource, ΠΈ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° DataSourceImpl. ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠ΅Π³ΠΎ-ΡΠΎ, ΠΊΡΠΎΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DataSource. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ DataSource Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅ΡΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ»Π°ΡΡ MyDao Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° DataSourceImpl ΠΈΠ»ΠΈ ΠΎΡ ΡΠ΅ΡΡΡΠ΅Ρ ΡΡΡΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ DataSourceImpl. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DataSource Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ MyDao.
Π¦Π΅ΠΏΠ½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠ΅Π½. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠ·ΡΠ°Π·ΠΈΡΡ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½Π° ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° MyDao ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ MyDao. ΠΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π·Π½Π°ΡΡ ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ DataSource, ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ MyDao. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ MyBizComponent Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° DataSourceImpl ΠΈ ΡΠ΅ΡΡΡΠ΅Ρ ΡΡΡΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ. ΠΡΠΎ Π΅ΡΠ΅ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ MyDao ΠΎΡ Π½ΠΈΡ , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ MyBizComponent ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠ°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DataSourceImpl ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΡΠ»ΠΎΡΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ. Π‘Π»ΠΎΠΉ Π½ΠΈΠΆΠ΅ MyBizComponent β ΡΡΠΎ ΡΠ»ΠΎΠΉ DAO.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ β ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ»ΠΎΡΠΌ. MyBizComponent Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° MyDao. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
Π‘Π½ΠΎΠ²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, MyDao, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. Π’Π΅ΠΏΠ΅ΡΡ MyBizComponent Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° MyDao. ΠΡΠ»ΠΈ Π±Ρ MyDao Π±ΡΠ» ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π΅Π· Π²Π΅Π΄ΠΎΠΌΠ° MyBizComponent.
Π’Π°ΠΊΠΎΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΅ ΡΠ»ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ»ΠΎΡ (ΡΠ»ΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ) Π΄ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ).
ΠΡΠ½ΠΎΠ²Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎΠ± ΠΎΡΠ½ΠΎΠ²Π°Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Π°Π½Π³Π». Dependency Injection, DI) ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈΠ»ΠΈ ΡΠΎΠΌΠ½Π΅Π²Π°Π΅ΡΡΡ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΌΠ°. ΠΡΠ°ΠΊ, Π½Π°ΡΠ½ΡΠΌ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ?
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Ρ Ρ ΠΎΡΡ ΡΡΠΎΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Ρ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, Π²Π΅Π΄Ρ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ» Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. Π Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»Π°ΡΡΡ ΡΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ! ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π»ΠΈ Π·Π° ΡΡΠΎ-Π»ΠΈΠ±ΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°Π΄Π°Ρ. ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΡΠ°Π²ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌΠΈ.
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±: Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ
ΠΡΠ°ΠΊ, ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²Π½ΡΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° β Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π»ΡΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠΈΠΌ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±. ΠΠ΄Π΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΡ . Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? Π£Π·Π½Π°Π΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΡΡΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ, Π½ΠΎ Ρ Π½Π΅Π³ΠΎ Π²ΡΡ Π΅ΡΡ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°ΠΉΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅? ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΠ½ΡΡΠΈΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ?
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ.
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Π½Π°ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° Π²ΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎ ΠΌΡ Π²ΡΠ΅ Π΅ΡΡ ΡΡΠΈΡΠ°Π΅ΠΌ Π²ΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ ΠΈΠΌ. ΠΠΠ§ΠΠΠ£?!
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ (ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°), ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ.
ΠΠ°ΠΊ ΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π»ΡΡΡΠ΅? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π’ΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±: ΠΏΡΡΡΡ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π°Ρ
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ, ΠΊΡΠΎ ΠΌΠΎΠ³ Π±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ, Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ Π±Ρ ΡΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΠΏΡΡΠΌΡΡ.
Β«Π§ΠΈΡΡΠ°ΡΒ» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ Π»ΠΈΡΠ½ΠΎΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ)
ΠΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΠΎΠ·Π»Π°Π³Π°Π΅ΡΡΡ Π½Π° ΡΡΠ΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΈ ΠΎΠ΄Π½Π° ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Ρ Π½ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β ΡΡΠΎ Π½Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΠ΄Π΅Ρ. ΠΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° (ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ΄Π΅Ρ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠ±ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΠ°ΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΡΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅Π³Π΄Π°:
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ (ΡΠ°ΠΉΠ»Π°Ρ ). ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (ΡΡΠΈΡΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ):
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²Π½ΡΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅ΡΡ ΠΏΡΠΎΡΠ΅ ΠΈ Π³ΠΈΠ±ΡΠ΅.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠ» ΠΏΡΠΈΡΠΈΠ½Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΈΠ΄Π΅ΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ, ΡΡΠΎΠ±Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ DI Π² Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ²ΡΡΡΠ½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·Π΄Π΅Π» Π² ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΡΡΡΠ° Android-ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΈ.
ΠΠ΅ΡΠ°ΡΠΈΠ·ΠΈΠΊΠ° Dependency Injection
Dependency Injection β ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π½Π΅ΡΡΠΈ ΠΏΠΎΠΈΡΡΠΈΠ½Π΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠ°ΠΊ ΠΈ Π»ΡΠ±Π°Ρ ΠΌΠ°Π³ΠΈΡ, ΡΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠΉ, Π° Π½Π΅ ΡΡΡΠΎΠ³ΠΈΠΉ Π½Π°ΡΡΠ½ΡΠΉ ΡΡΠ°ΠΊΡΠ°Ρ. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²Π΅ΡΠ½ΠΎΠΌΡ ΡΠΎΠ»ΠΊΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ². Π ΡΠ²ΠΎΡΠΌ Π°Π²ΡΠΎΡΡΠΊΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ, ΠΊΡΠ°ΡΠΊΠΎ ΠΈ ΠΏΠΎ ΡΡΡΠΈ, ΠΏΡΠΎΠΉΡΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ ΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π΄ΠΎ ΡΠΎΠΉ ΡΠ°ΠΌΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π» Π½Π°ΠΏΠΈΡΠ°Π½ ΠΏΠΎ ΠΌΠΎΡΠΈΠ²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Hypo, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅. Π ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΊΠΎΠ΄Π° Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ruby, ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ .
Π£ΡΠΎΠ²Π΅Π½Ρ 1: Dependency Inversion Principle
β Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅ΡΠΎΠ² (InvoiceProcessor) ΠΈ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ (NotificationService). Π‘Π΅ΡΠ²ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅ΡΠΎΠ² ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, Π²ΡΠ½Π΅ΡΠ΅ΠΌ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π΄Π°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ Π° ΡΠ΅ΠΌ, ΡΡΠΎ Π·Π° ΡΠ°Π·Π½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π§Π°ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ:
ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π²Π²ΠΈΠ΄Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠΎΠΊΡΡ ΡΠ²ΡΠ·Π½ΠΎΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (High Coupling). ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (Single Responsibility Principle) β Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ²ΠΎΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ; Π° ΡΠ°ΠΊΠΆΠ΅ Β«Π·Π½Π°ΡΡΒ» ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (Β«reason to changeΒ», R. Martin). ΠΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Inversion Principle). Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ β ΡΠ΅ΡΠ²ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅ΡΠΎΠ² ΡΠΆΠ΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Β«Π·Π½Π°ΡΡΒ», ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π»ΠΎΠΌΠ°ΡΡ Π³ΠΎΠ»ΠΎΠ²Ρ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π·Π°Π³Π»ΡΡΠΊΠΎΠΉ. Π ΡΠ·ΡΠΊΠ°Ρ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΡΠΈΠΏΠ° Ruby, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ notify; ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΡΠΈΠΏΠ° C#/Java, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ INotificationService, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Mock. ΠΠ΅ΡΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠΏΡΠΎΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ°ΡΠΊΡΡΡ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠΌ ΠΡΠ½Π΄Ρ (AlexanderByndyu) Π² ΡΡΠ°ΡΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΠ»Π° 10-Π»Π΅ΡΠΈΠ΅!
Π£ΡΠΎΠ²Π΅Π½Ρ 2: ΡΠ΅Π΅ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ. ΠΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ·-Π·Π° ΡΠΎΡΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ. NotificationService ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΠΊΡΠΎΠΌΠ΅ InvoiceProcessor. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π·Π°Π²ΠΈΡΡΡ ΠΎ ΡΡΠ΅ΡΡΠΈΡ
ΠΈ Ρ.Π΄. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅. ΠΠ»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΎΡΠ²Π΅ΡΠ° Π½Π° Π²ΠΎΠΏΡΠΎΡ β Β«ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ?Β».
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ³ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΠΎ Π½Π΅ ΡΡΡΠ΄Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ:
ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ container.resolve() ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ°Π±ΡΠΈΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Ρ Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΠ΅Π΅ΡΡΡΠ΅. Π ΡΠ»ΡΡΠ°Π΅ `container.resolve(InvoiceProcessor)` Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π ΡΠ·ΡΠΊΠ°Ρ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
Π ΡΠ°ΠΌΠΊΠ°Ρ Ruby ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠΌΡ ΡΠΈΠΏΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ snake_case, ΡΡΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
Π£ΡΠΎΠ²Π΅Π½Ρ 3: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΡ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ. Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ»Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΊ ΠΠ. ΠΠΎΠΏΠ½ΡΠΌ Π³Π»ΡΠ±ΠΆΠ΅, Π° Π΅ΡΠ»ΠΈ Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΠΠ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ HTTP-Π·Π°ΠΏΡΠΎΡΠ°.
Π‘ΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, ΡΡΠΎ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠΌ Π½Π° Π·Π°ΠΌΠ΅Π½Ρ Π² ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ InstanceFactory. ΠΠ±Π½ΠΎΠ²Π»ΡΠ½Π½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°:
Π Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°Π±ΠΎΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ (Strategy, GoF) Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Container::resolve, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΌΠ΅ΡΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ Factory Π² Resolver. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ ΠΌΠ΅ΡΠΎΠ΄Π° Container::register ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β life_time (Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ). ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ β ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«transientΒ» (ΡΠΊΠΎΡΠΎΡΠ΅ΡΠ½ΡΠΉ), ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ°Π½Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ Β«singletonΒ» ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ β Ρ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·.
Β«ScopeΒ» ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠ΅ΠΉ. ΠΠΌΠ΅ΡΡΠΎ Β«ΡΠΊΠΎΡΠΎΡΠ΅ΡΠ΅ΠΊΒ» ΠΈ Β«ΠΎΠ΄ΠΈΠ½ΠΎΡΠ΅ΠΊΒ» Π·Π°ΡΠ°ΡΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΡΠΎ ΡΡΠ΅Π΄Π½Π΅Π΅ β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΆΠΈΠ·Π½ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°ΠΏΡΠΎΡΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, HTTP-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΠ, Π°Π³ΡΠ΅Π³Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΆΠΈΠ·Π½ΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Ρ. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ, Π·Π°ΠΌΠΊΠ½ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ:
ΠΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° session, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° request:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ request Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΠΌΠΈΡΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ release, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ scope.
Π£ΡΠΎΠ²Π΅Π½Ρ 4: Dependency Injection
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅Π΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈ, Π·Π°ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π³ΡΠ°ΡΠΎΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π²ΡΠΈΡ ΡΡ ΡΠ²ΡΠ·Π΅ΠΉ. Π Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΡΠΆΠ½ΠΎ? ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ Ruby on Rails:
ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ, ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌ. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ βΠ·Π°ΡΡΠ°Π²ΠΈΡΡβ Rails Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΡΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ. ΠΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ASP.NET MVC ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ΄Π°ΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Ρ
Π½ΠΈΠΊΡ Inversion of Control (IoC, ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ). ΠΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΡΡ
ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π»ΠΎΠΆΠΈΡΡΡ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΡΡΠΎ-ΡΠΎ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Rails Ρ Π½ΡΠ»Ρ. Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡ
Π΅ΠΌΡ:
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡ, ΡΠΎΡΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΠΏΠΎΡΡΡΠ°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ. Π’Π°ΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π»ΠΈΡΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΎ Π·Π΄Π΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, Π° Π³Π΄Π΅ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ? ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡ Π²Π°ΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΡΠ°Π½Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π½Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΠ°, ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ App. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
Π Π»ΡΠ±ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΅ΡΡΡ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ main. Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ call. ΠΠ°Π΄Π°ΡΠ΅ΠΉ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π’ΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ β Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΉΡΠΈ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΠ»Π°Π½, Π²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΌΠ°Π³ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ». Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ°ΠΊΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΠΌ Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠ²Π½ΠΎ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ:
Π‘ΡΠ΅Π΄Π° Β«ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΒ» ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² ΡΠ΅ΡΠ΄ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ Π²ΡΡ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ. ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π±ΡΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Router Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Controller. ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΎ Controller β ΡΡΠΎ ΠΊΠΎΡΠΎΡΠΊΠΎΠΆΠΈΠ²ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π° Router β ΠΏΠΎΡΡΠΎΡΠ½Π½Π°Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ°. ΠΠ°ΠΊ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ? Π Π°Π·Π³Π°Π΄ΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²Π½Π΅ΡΠ½Π΅. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ proxy-ΠΎΠ±ΡΠ΅ΠΊΡΡ (Proxy, GoF) Ρ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ (Factory Method, GoF) instance; ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠ΅ΠΉ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Controller Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Β«transientΒ», ΡΠΎ Router ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ. ΠΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΡΡΠ°ΠΆΡΠ½ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ:
Π’.Π΅. ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΡΠ½ΠΎΠ²Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎΠ± ΠΎΡΠ½ΠΎΠ²Π°Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Π°Π½Π³Π». Dependency Injection, DI) ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈΠ»ΠΈ ΡΠΎΠΌΠ½Π΅Π²Π°Π΅ΡΡΡ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΌΠ°. ΠΡΠ°ΠΊ, Π½Π°ΡΠ½ΡΠΌ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ?
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Ρ Ρ ΠΎΡΡ ΡΡΠΎΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Ρ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, Π²Π΅Π΄Ρ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ» Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. Π Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»Π°ΡΡΡ ΡΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ! ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π»ΠΈ Π·Π° ΡΡΠΎ-Π»ΠΈΠ±ΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°Π΄Π°Ρ. ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΡΠ°Π²ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌΠΈ.
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±: Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ
ΠΡΠ°ΠΊ, ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²Π½ΡΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° β Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π»ΡΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠΈΠΌ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±. ΠΠ΄Π΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΡ . Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? Π£Π·Π½Π°Π΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΡΡΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ, Π½ΠΎ Ρ Π½Π΅Π³ΠΎ Π²ΡΡ Π΅ΡΡ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°ΠΉΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅? ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΠ½ΡΡΠΈΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ?
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ.
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Π½Π°ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° Π²ΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎ ΠΌΡ Π²ΡΠ΅ Π΅ΡΡ ΡΡΠΈΡΠ°Π΅ΠΌ Π²ΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ ΠΈΠΌ. ΠΠΠ§ΠΠΠ£?!
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ (ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°), ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ.
ΠΠ°ΠΊ ΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π»ΡΡΡΠ΅? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π’ΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±: ΠΏΡΡΡΡ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π°Ρ
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ, ΠΊΡΠΎ ΠΌΠΎΠ³ Π±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ, Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ Π±Ρ ΡΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΠΏΡΡΠΌΡΡ.
Β«Π§ΠΈΡΡΠ°ΡΒ» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ Π»ΠΈΡΠ½ΠΎΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ)
ΠΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΠΎΠ·Π»Π°Π³Π°Π΅ΡΡΡ Π½Π° ΡΡΠ΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΈ ΠΎΠ΄Π½Π° ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Ρ Π½ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β ΡΡΠΎ Π½Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΠ΄Π΅Ρ. ΠΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° (ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ΄Π΅Ρ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠ±ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΠ°ΠΌ ΠΌΠΎΠ³ΡΡ Π±Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΡΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅Π³Π΄Π°:
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ (ΡΠ°ΠΉΠ»Π°Ρ ). ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (ΡΡΠΈΡΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ):
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²Π½ΡΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅ΡΡ ΠΏΡΠΎΡΠ΅ ΠΈ Π³ΠΈΠ±ΡΠ΅.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠ» ΠΏΡΠΈΡΠΈΠ½Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΈΠ΄Π΅ΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ, ΡΡΠΎΠ±Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ DI Π² Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ²ΡΡΡΠ½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·Π΄Π΅Π» Π² ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΡΡΡΠ° Android-ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΈ:


