Srp ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅
Srp ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅
Secure Remote Password Protocol (SRPP) β ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΠ°ΡΠΎΠ»ΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΉ ΠΊ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΈ MITM-Π°ΡΠ°ΠΊΠ΅ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΠΉ ΡΡΠ΅ΡΡΠ΅ΠΉ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. SRP ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Π½ΠΎΡΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ. ΠΡΠΎΡΠΎΠΊΠΎΠ» ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΡΠΎΠΉΠΊΠΎΡΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Encrypted key exchange, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠ·Π±Π°Π²Π»ΡΡΡΡ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ².
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΠ±Π·ΠΎΡ
ΠΡΠΎΡΠΎΠΊΠΎΠ» SRP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΎΠ½ Π·Π½Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΡΠ°ΠΊΡ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²:
SRP ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠ°Π·Π³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, Ρ ΡΠ°Π½ΡΡΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΅Π³ΠΎ ΠΏΠ°ΡΠΎΠ»Π΅. ΠΡΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠΈ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 6 Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π²ΠΈΠ·ΠΈΠΉ, Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅Π²ΠΈΠ·ΠΈΡ β 6a.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΉ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ. Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΈΠΌΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , SRP ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΡΠ΅, ΡΠ΅ΠΌ SSH, ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠ΅, ΡΠ΅ΠΌ Deffie-Hellman, ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. ΠΡΠΎΡΠΎΠΊΠΎΠ» SRP Π²Π΅ΡΡΠΈΠΈ 3 ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² RFC 2945. SRP Π²Π΅ΡΡΠΈΠΈ 6 ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² SSL/TLS ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ EAP ΠΈ SAML, ΠΈ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΡΠ΅ΡΡΡ IEEE P1363 ΠΈ ISO/IEC 11770-4.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ
ΠΠ²Π΅Π΄Π΅ΠΌ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡ:
ΠΠΎΠ½ΡΡΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΌ ΠΏΠΎΠ½ΡΡΠΈΡΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅ΠΉ, Ρ Π΄Π²ΡΠΌΡ ΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠ°ΠΌΠΈ: ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° ΠΏΠ°ΠΌΡΡΡ Ρ Π½Π΅Π³ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°; Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΡΡ ΠΎΠΆ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΠ· ΠΏΠ°ΡΠΎΠ»Ρ, Π° ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΠΎΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ, Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² ΡΠ°ΠΉΠ½Π΅. Π‘ΠΏΠΎΡΠΎΠ± Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, Π½ΠΎ Π½Π΅ ΠΏΠ°ΡΠΎΠ»Ρ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ(verifier-based).
ΠΠ· ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ A,B (ΡΠΌ. Π½ΠΈΠΆΠ΅). Π‘Π΅ΡΠ²Π΅Ρ Ρ ΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΎΡΠΌΡΠ»Ρ:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Ρ ΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΡ (I, s, v) Π² ΡΠ²ΠΎΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅:
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°:
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ K. ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ ΠΈΡ ΠΊΠ»ΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²:
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
Π Π΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΎ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌ, ΡΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° SRP.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π½Π΅Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ Π΅Ρ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΊ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ (challenge-responce), Π³Π΄Π΅ ΠΎΠ±ΠΌΠ΅Π½ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Ρ Π΅Ρ ΠΎΡ ΡΡΠ΅Ρ Π²Π΅Π»ΠΈΡΠΈΠ½: r, c, password, ΠΈ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΠ°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ·Π²ΠΈΠΌ ΠΊ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ, ΠΈΠΌΠ΅Ρ r, c, hash, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΉΡΠΈ ΠΊ ΡΡΠ΅ΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠΈΡΠ΅Π½ ΠΈ ΠΎΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ. Π‘Π΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Encrypted key exchange (EKE). Π‘ΡΡΡ ΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΊΠ»ΡΡΠΈ Π΄Π»Ρ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΎΠ±ΠΎΠΈΠΌ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ. ΠΠ°Π½Π½ΠΎΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠΈΠΌΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ, Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ AKE (Asymmetric key exchange), ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ°ΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΡΡΠΊΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π·Π°ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ AKE ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ SRP.
Software Restriction Policies
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Windows Server 2003)
Π‘ΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Windows Server 2003)
ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Windows Server 2003)
Π£Π³ΡΠΎΠ·Ρ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Windows Server 2008 R2)
ΠΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π΄Π»Ρ ΠΈΡ-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (srp) Π² Windows Server 2012 ΠΈ Windows 8, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π½Π°Π±ΠΎΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Windows Server 2003.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ β ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ Π² Π΄ΠΎΠΌΠ΅Π½Π΅, ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡΠΌ ΠΏΠΎΠ²ΡΡΠ°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ, ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΡΡΡ ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ².
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ Π·Π°ΠΏΡΡΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΡΡΡΡ ΡΠΎ ΡΠ»ΡΠΆΠ±ΠΎΠΉ Microsoft Active Directory ΠΈ Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ. ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ . ΠΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎΠ²Π΅ΡΠΈΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄ΠΎΠ²Π΅ΡΠΈΡ.
ΠΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΎΡΠ½Π°ΡΡΠΊΠΈ Microsoft Management Console (MMC) «ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ».
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°Π΄Π°Ρ:
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄;
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π³ΠΈΠ±ΠΊΡΡ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π΄Π»Ρ ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ActiveX.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅Π»ΡΡ :
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ;
Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ Ρ ΠΎΠ±ΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ;
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΠΈΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ;
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΡΠΊΠ°Π·Π°ΡΡ, Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ );
Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΡΠ°ΠΉΡΠ΅, Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ΅Π½Π΅. ΠΡΠΎ ΡΠΌΠ΅ΡΡΠ½ΠΎ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ.
ΠΠΎΠ²ΡΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ.
Π£Π΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
Π£Π΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ Π΄Π»Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (MMC).
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
Π Π΅Π΄Π°ΠΊΡΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ
Authenticode ΠΈ WinVerifyTrust
ΠΡΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΡΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ Π² Π΄ΠΎΠΌΠ΅Π½Π΅, ΠΊ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
ΠΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ Active Directory
Π‘Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΈ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ½ΠΊΡΠ° «ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠ»ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ» Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ½ΠΎΠ³ΠΎΠ»ΠΈΠΊΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ°ΠΆΠ΅ΡΡΡ, Π»ΡΠ±ΠΎΠΉ «ΡΠΎΠ»ΠΈΠ΄Π½ΡΠΉ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π·Π½Π°Π΅Ρ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SOLID Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (SRP) Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ.
Π‘ΠΏΠΎΠΉΠ»Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅
Single Responsibility Principle: A module should have one, and only one, reason to change.
Open/Closed Principle:: A software artifact should be open for extension but closed for modification.
Liskov Substitution Principle:: What is wanted here is something like the following substitution property: If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T
Interface Segregation Principle:: Clients should not be forced to depend upon interfaces that they do not use.
Dependency Inversion Principle::
High level modules should not depend upon low level modules. both should depend upon abstractions.
Abstractions should not depend upon details. details should depend upon abstractions.
ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΡ Π·Π°Ρ ΠΎΠ΄ΠΈΡ ΠΎΠ± SRP, Ρ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΎΡΠ½ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π²Π²ΠΈΠ΄Ρ ΠΌΠΎΠΉ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ SRP ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΡΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ. Π Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΠΌΠΌβ¦β ΡΡΡΠΊΠΎΠ²ΠΈΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΠ.
Π€ΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠΈ SRP
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΈΠ²Π΅Π΄Ρ Π½Π΅Π²Π΅ΡΠ½ΡΡ, Π½ΠΎ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΡ:
ΠΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°ΡΡ ΠΎΠ΄Π½Ρ Π²Π΅ΡΡ
ΠΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΎΡΠΈΡ ΠΈ ΡΡΡΡΠΊΠ°Ρ Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ:
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ΅ ΡΠ΅ΡΡΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΈ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅.
Π₯ΠΎΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΎΠΊ ΠΠ°ΡΡΠΈΠ½Π°.
It is too easy for programmers to hear the name and then assume that it means that every module should do just one thing.
Make no mistake, there is a principle like that. [β¦β] But it is not one of the SOLID principles β it is not the SRP.
β Robert C. Martin, Clean Architecture
Π‘Π°ΠΌ ΠΠ°ΡΡΠΈΠ½ ΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅Ρ SRP ΡΡΠ΅ΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
Π€ΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° 2003 Π³ΠΎΠ΄Π°
The Single Responsibility Principle (SRP) states that a class or module should have one, and only one, reason to change
β Robert C. Martin, Agile software development Principles Patterns and Practices
Π€ΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° 2014 Π³ΠΎΠ΄Π°
Gather together the things that change for the same reasons. Separate those things that change for different reasons.
β Robert C. Martin, The Single Responsibility Principle
Π€ΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° 2018 Π³ΠΎΠ΄Π°
A module should be responsible to one, and only one, actor
β Robert C. Martin, Clean Architecture
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Ρ Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ, ΠΌΠ½Π΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΠΎ ΡΡΠΈ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ ΠΠ°ΡΡΠΈΠ½Π° ΠΎΠ± SRP. ΠΡ ΠΆΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ Π΄Π΅Π½Ρ-Π΄Π²Π° ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠ²Π΅Ρ Π·Π° ΠΏΡΡΠ½Π°Π΄ΡΠ°ΡΡ ΠΌΠΈΠ½ΡΡ, Π΅ΡΠ»ΠΈ Π΄ΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΏΠΎΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π°Π½ΠΊΠ» ΠΠΎΠ± ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ SRP ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π°Π΄ΡΠ°ΡΡ Π»Π΅Ρ.
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ SRP
Agile software development Principles Patterns and Practices, 2003
ΠΠΏΠ΅ΡΠ²ΡΠ΅ SRP ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Agile software development Principles Patterns and Practices. Π ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΠ°ΡΡΠΈΠ½ ΠΏΠΎΡΡΠ½ΡΠ» Π΅Π³ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
Consider the bowling game from Chapter 6. For most of its development the Game class was handling two separate responsibilities. It was keeping track of the current frame, and it was calculating the score. In the end, RCM and RSK separated these two responsibilities into two classes. The Game kept the responsibility to keep track of frames, and the Scorer got the responsibility to calculate the score. (see page 85.)
β Robert C. Martin, Agile software development Principles Patterns and Practices
Clean Code, 2008
ΠΠΎΡΡΠ½ΡΡΡ SRP Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠ°ΡΡΠΈΠ½ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΈ Π² Clean Code:
The seemingly small SuperDashboard class in Listing 10-2 has two reasons to change. First, it tracks version information that would seemingly need to be updated every time the software gets shipped. Second, it manages Java Swing components (it is a derivative of JFrame, the Swing representation of a top-level GUI window)
β Robert C. Martin, Clean Code
The Clean Coder, 2011
ΠΠ°ΡΠ΅ΠΌ Π² The Clean Coder Π°Π½ΠΊΠ» ΠΠΎΠ± ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ SRP ΡΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»):
There is a design principle called the Single Responsibility Principle (SRP). This principle states that you should separate those things that change for different reasons, and group together those things that change for the same reasons. GUIs are no exception.
The layout, format, and workflow of the GUI will change for aesthetic and efficiency reasons, but the underlying capability of the GUI will remain the same.
Design experts have been telling us for decades to separate our GUIs from our business rules.
β Robert C. Martin, The Clean Coder
The Single Responsibility Principle, 2014
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎ SRP Π°Π½ΠΊΠ» ΠΠΎΠ± ΡΠΆΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½ «ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² [ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ]» (separation of concerns):
Two years later, Edsger Dijkstra wrote another classic paper entitled On the role of scientific thought. in which he introduced the term: The Separation of Concerns. [. ] This is the reason we do not put SQL in JSPs. This is the reason we do not generate HTML in the modules that compute results. This is the reason that business rules should not know the database schema. This is the reason we separate concerns.
β Robert C. Martin, https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html
ΠΠΎ Π·Π΄Π΅ΡΡ ΠΆΠ΅, ΠΠ°ΡΡΠΈΠ½ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ SRP ΡΠΎΠ²ΡΠ΅ΠΌ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ»ΡΡΠ΅:
And this gets to the crux of the Single Responsibility Principle. This principle is about people.
When you write a software module, you want to make sure that when changes are requested, those changes can only originate from a single person, or rather, a single tightly coupled group of people representing a single narrowly defined business function.
β Robert C. Martin, https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html
ΠΠ΄Π΅ΡΡ ΡΠΆΠ΅ ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎ Π»ΡΠ΄ΡΠΌ.
Clean Architecture, 2018
Π ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΆΠ΅ ΡΠΎΡΠΌΠ΅ ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΡΠ΅ Π³ΠΎΠ΄Π° Π² Clean Architecture:
A module should be responsible to one, and only one, actor
β Robert C. Martin, Clean Architecture
ΠΠ΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌ Π»ΠΈΡΠΎΠΌ (actor) Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³ΡΡΠΏΠΏΠ° ΡΡΠ΅ΠΉΠΊΡ ΠΎΠ΄Π΅ΡΠΎΠ² (Π»ΡΠ΄Π΅ΠΉ ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈΡΠ°ΡΡΠ½ΡΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ) Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ.
Π¨Π΅ΡΡΠ°Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° SRP
ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΠ°Ρ (ΡΠΆΠ΅ ΠΌΠΎΡ) ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° SRP:
ΠΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΊΡ ΠΎΠ»Π΄Π΅ΡΠ°.
β ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΈΠ΄ΠΊΠΎΠ², ΠΠ½ΠΎΠ³ΠΎΠ»ΠΈΠΊΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΎΡΠ²Π΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠΈ ΡΡΠ°, Π½ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° SRP Π½Π΅ Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅ ΡΠ°Π·Π±ΠΈΡΡ SRP Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΡΠΎΡΠΌΠΈΡΡΠΉΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π°ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ;
ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ GUI) ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»Π°;
ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ;
ΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅ΡΡΡ. Π ΡΠ΅ΡΡΠ°Ρ ΠΌΠΎΠΊΠ°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, Π° system under test ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ «ΡΡΠΊΠ°ΠΌΠΈ» (Π° Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ DI-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°).
ΠΡΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΠΉΠΊΡ ΠΎΠ»Π΄Π΅ΡΠΎΠ² ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Π ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠΌΡ ΠΊΡΡΠ³Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅.
ΠΠ° ΡΡΠΊΡ Π²ΠΈΡΠΈΡ ΠΌΠΎΡΠ°Π»ΠΎ, Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Π²ΡΡ ΡΠ½Π°ΡΠ°Π»Π°
SOLID relevance, 2020
ΠΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΉ SRP ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΠ²ΠΎΠ»ΡΡΠΈΠ΅ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ SRP ΡΠ°ΠΌΠΈΠΌ ΠΠ°ΡΡΠΈΠ½ΠΎΠΌ. Π‘Π½Π°ΡΠ°Π»Π° Π΄Π»Ρ Π½Π΅Π³ΠΎ SRP Π±ΡΠ» ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΡΠΎΠΌ ΠΎΠ½ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΠΏΠΎ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄ ΡΠΎΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π°Π½ΠΊΠ» ΠΠΎΠ± ΠΎΠ±ΠΎΠ±ΡΠΈΠ» ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ Π»ΠΈΡ.
ΠΡΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠΎΠΊΠ° ΠΠ°ΡΡΠΈΠ½ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΡΡ Π½Π° ΡΠ΅ΠΌΡ SRP. Π Π½ΡΠΌ ΠΎΠ½ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΠ°ΡΠΈΠ»ΡΡ ΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ:
It is hard to imagine that this principle is not relevant in software. We do not mix business rules with GUI code. We do not mix SQL queries with communications protocols.
β Robert C. Martin, https://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html
ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΈΡΡΠΎΡΠΈΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΉ SRP Ρ Π²ΡΡΠΎΡΡ «ΠΏΡΠΈΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ°», ΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΈΠ΄Π½ΠΎ ΡΡΠΎ Π°Π½ΠΊΠ» ΠΠΎΠ± ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΊΠ°ΡΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΠΎΠ΄Π°:
ΠΡΡΠΎΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΉ SRP
Agile software development Principles Patterns and Practices
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°ΠΌΡΠΊ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π΅ Π»ΠΈΡΠΎ*
The Single Responsibility Principle
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π°ΡΠΏΠ΅ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π΅ Π»ΠΈΡΠΎ
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π΅ Π»ΠΈΡΠΎ, Π² ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π°ΡΠΏΠ΅ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ**
* Π Agile software development Principles Patterns and Practices Π±ΡΠ» ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² Π³Π»Π°Π²Π΅ ΠΏΡΠΎ SRP.
Two different applications use the Rectangle class. One application does computational geometry. It uses Rectangle to help it with the mathematics of geometric shapes. It never draws the rectangle on the screen. The other application is graphical in nature. It may also do some computational geometry, but it definitely draws the rectangle on the screen.
β Robert C. Martin, Agile software development Principles Patterns and Practices
ΠΠ»ΡΠ΄Ρ Π½Π° ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ (ΠΈΠ· 2021 Π³ΠΎΠ΄Π°) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΉΡΠΈ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΡΠ΄ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ (ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ Π»ΠΈΡ) ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ draw ΠΈ area ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ Π»ΠΈΡ.
** Π Clean Architecture ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ (ΠΌΠ΅ΡΠΎΠ΄ save, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ CTO). ΠΠΎ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΠ°ΡΡΠΈΠ½ ΡΠΆΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ ΠΏΡΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ. Π ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π½Π΅ΡΠΈΠΏΠΈΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΠΎΠ²Π° actor, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΠ΅ΡΠ²ΡΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ SRP, Π½ΠΎ Π² ΠΆΠΈΠ·Π½ΠΈ Ρ Π΅Ρ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π».
ΠΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ SQL ΠΈ JSP ΠΈ Π²ΡΡ Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΈ Π»ΠΎΠΌΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ΄Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈ ΠΏΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³ json-Π°, ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ². Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΡΡΠΏΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ.
ΠΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΡΡΠΈ Π³ΠΎΠ΄Π°? Π― Π΄ΡΠΌΠ°Ρ Π½Π΅Ρ.
ΠΠ°ΠΌ Π½ΡΠΆΠ½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ:
Π²ΠΎΠΎΠ±ΡΠ΅, Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SRP. Π Π°Π·Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ΄ ΡΡΠΎΠΉ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. ΠΠ°ΠΆΠ΅ ΡΠ°ΠΌ ΠΠ°ΡΡΠΈΠ½ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅Ρ ΠΈ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ SRP;
ΡΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ ΠΠ΅ΡΠ½ΠΎΠΉ ΠΠ΅ΡΡΠΈΠ΅ΠΉ SRP, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ.
Π Ρ ΠΎΡΡ SRP ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ SOLID-Π°, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΡΠΎΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΠΎΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ SOLID Π² ΡΠ²ΠΎΡΠΌ ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ ΡΠΈΡΡΠ΅ΠΌ.
Single Responsibility Principle. ΠΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΅ΡΡΡ
Single responsibility principle, ΠΎΠ½ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ,
ΠΎΠ½ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΠΈ β ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠΊΠΎΠ»ΡΠ·ΠΊΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ΅Π½Ρ ΠΈ ΡΡΠΎΠ»Ρ Π½Π΅ΡΠ²ΠΎΠ·Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΡΡΠΈΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ ΡΠΎΡΡΠΎΡΠ»ΠΎΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΡΡΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ»ΠΎΠ΄ΡΡ ΠΈ Π·Π΅Π»Π΅Π½ΡΡ Π½Π°Ρ Π²ΡΠ²Π΅Π·Π»ΠΈ Π² Π»Π΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ· Π»ΠΈΡΠΈΠ½ΠΎΠΊ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² β ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² Π½Π°ΡΡΠΎΡΡΠΈΡ .
Π Π»Π΅ΡΡ Π½Π°Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ Π½Π° Π³ΡΡΠΏΠΏΡ ΠΏΠΎ 8-9 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈ ΡΡΡΡΠΎΠΈΠ»ΠΈ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΊΠ°ΠΊΠ°Ρ Π³ΡΡΠΏΠΏΠ° Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠΏΡΠ΅Ρ Π±ΡΡΡΠ»ΠΊΡ Π²ΠΎΠ΄ΠΊΠΈ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ· Π³ΡΡΠΏΠΏΡ Π½Π°Π»ΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ΄ΠΊΡ Π² ΡΡΠ°ΠΊΠ°Π½, Π²ΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΈΠ²Π°Π΅Ρ, Π° ΡΡΠ΅ΡΠΈΠΉ Π·Π°ΠΊΡΡΡΠ²Π°Π΅Ρ. ΠΡΠΏΠΎΠ»Π½ΠΈΠ²ΡΠΈΠΉ ΡΠ²ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ½ΠΈΡ Π²ΡΡΠ°Π΅Ρ Π² ΠΊΠΎΠ½Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π³ΡΡΠΏΠΏΡ.
Π‘Π»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π±ΡΠ» ΠΊΡΠ°ΡΠ΅Π½ ΡΡΠ΅ΠΌ, ΠΈ ΡΠ²Π»ΡΠ»ΡΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ SRP.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 1. ΠΠ΄ΠΈΠ½Π°Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ.
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (SRP) Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅ΡΡΡ ΡΠ²ΠΎΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠ° ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Ρ Π½Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ «ΠΡΠΏΠΈΠ²ΠΎΡ
Π°» (Tippler).
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° SRP ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ Π½Π° ΡΡΠΎΠΈΡ
:
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΠΎΠ΄Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΎ Π΅ΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ β Π²ΡΠΏΠΈΡΡ, Π½Π°Π»ΠΈΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΊΡΡΠΈΡΡ.
ΠΡΠΏΠΈΠ²ΠΎΡ Π° ΠΆΠ΅, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΠ°Π΄ΠΎΠΌ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
ΠΠ°ΡΠ΅ΠΌ?
Π§Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΏΠΈΡΠ΅Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°-ΠΎΠ±Π΅Π·ΡΡΠ½Ρ, Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΡΠ½Π° Π½Π΅Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π΅Π½, Π³Π»ΡΠΏ ΠΈ Π²Π΅ΡΠ½ΠΎ ΠΊΡΠ΄Π°-ΡΠΎ ΡΠΏΠ΅ΡΠΈΡ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈ ΠΏΠΎΠ½ΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 3 β 7 ΡΠ΅ΡΠΌΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΈΠ²ΠΎΡ
ΠΈ ΡΡΠΈΡ
ΡΠ΅ΡΠΌΠΎΠ² ΡΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΡΡΡΠ½Π΅ΠΉ, ΡΠΎ Π² Π½Π΅ΠΌ ΠΏΠΎΡΠ²ΡΡΡΡ ΡΡΠΊΠΈ, ΡΡΠ°ΠΊΠ°Π½Ρ, ΠΌΠΎΡΠ΄ΠΎΠ±ΠΎΠΈ ΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΏΠΎΡΡ ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅. Π Π²ΡΠ΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π² ΡΠ΅Π»Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. Π£Π²Π΅ΡΠ΅Π½ β Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π³ΡΠΌΠ°Π½Π½ΠΎΠ΅ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΈΡ
ΠΈΠΊΠΈ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΡΠ½Π° Π·Π°ΡΠΎΡΠ΅Π½ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ° Π² ΡΠ²ΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅. Π ΡΠ²ΠΎΠ΅ΠΌ Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡ, ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· Π½ΠΈΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΡΡΠ°ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΠΊΡΡΡΡ Π΄Π²Π΅ΡΡ, ΠΎΡΠΊΡΡΡΠΈΡΡ ΠΎΠ±ΡΠΈΠ²ΠΊΡ Π΄Π²Π΅ΡΠΈ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΡΠ΅ΠΊΠ»ΠΎΠΏΠΎΠ΄ΡΠ΅ΠΌΠ½ΠΈΠΊΠΎΠ², Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ ΡΠ΅ΡΡΠ΅ΡΠ½ΠΈ. ΠΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π² ΠΎΠ΄Π½ΠΎΠΌ «Π»ΠΈΡΡΠΈΠ½Π³Π΅». ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ «ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΡΠ½Π°» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ.
ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΈ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π½Π° Π½Π°Π±ΠΎΡ ΠΌΠ΅Π½Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ: Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠ°ΡΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ β Π²ΠΎΠ·Π΄ΡΡ ΠΎΠ²ΠΎΠ΄ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π²Π΅ΡΡ, Π° Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ β ΡΠ±ΠΎΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΈ Π·Π°ΠΌΠΊΠ° Π½Π΅ Π΄Π°Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, ΡΡΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈ ΡΠ΅ΠΌΠΎΠ½ΡΠ΅.
Π’Π°ΠΊ Π²ΠΎΡ, SRP β ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠΈΠΉ ΠΠΠ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎ Π΅ΡΡΡ Π³Π΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π΄ΠΎ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ «ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ», ΡΠΎ Π΅ΡΡΡ ΠΏΠΎ Π·Π°Π΄Π°ΡΠ°ΠΌ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π²ΡΠΏΠΈΠ²ΠΎΡ Π΅ ΠΈ ΠΏΠ»ΡΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΡΠ½ΠΊΠ° ΠΏΡΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ:
Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΌΠΈΠ½ΡΡΡ:
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 2. ΠΠ΄ΠΈΠ½Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΡ.
ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ Π³ΠΎΡΠΏΠΎΠ΄Π°! ΠΠ»Π°ΡΡ Π²ΡΠΏΠΈΠ²ΠΎΡ ΠΈ ΠΆΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ β ΠΎΠ½ Π²ΡΠΏΠΈΠ²Π°Π΅Ρ! Π Π²ΠΎΠΎΠ±ΡΠ΅, ΡΠ»ΠΎΠ²ΠΎ «ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ» β ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ°Π·ΠΌΡΡΠΎΠ΅. ΠΡΠΎ-ΡΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΡΡΠ΄ΡΠ±Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²Π°, Π° ΠΊΡΠΎ-ΡΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠΏΡΠΎΠΊΠΈΠ½ΡΡΡΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅ ΠΏΠΈΠ½Π³Π²ΠΈΠ½ΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΈΠ²ΠΎΡ ΠΈ. ΠΠ΅ΡΠ²Π°Ρ, ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π²ΡΡΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° β Π½Π°Π»ΠΈΡΡ, Π²ΡΠΏΠΈΡΡ ΠΈ Π·Π°ΠΊΡΡΠΈΡΡ.
ΠΡΠΎΡΠ°Ρ, Π½Π°ΠΏΠΈΡΠ°Π½Π° ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ «ΠΠΏΠ΅ΡΠ΅Π΄ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΏΠ΅ΡΠ΅Π΄» ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Act:
ΠΠ±Π° ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ, Π²ΡΠ³Π»ΡΠ΄ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ «Π²ΡΠΏΠΈΡΡ».
Π’ΠΎΠ³Π΄Π° ΠΌΡ Π»Π΅Π·Π΅ΠΌ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ ΡΠ·Π½Π°Π΅ΠΌ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ SRP β ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΠΈ.
ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ «Π£ ΠΌΠΎΠ΄ΡΠ»Ρ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ²ΠΎΠ΄ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ«. Π’ΠΎ Π΅ΡΡΡ «ΠΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ β ΡΡΠΎ ΠΏΠΎΠ²ΠΎΠ΄ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ».
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π²ΡΡΠ°Π΅Ρ Π½Π° ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠ°. ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π°Π»ΠΈΠ²Π°Π½ΠΈΡ, Π²ΡΠΏΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π·Π°ΠΊΡΡΡΠ²Π°Π½ΠΈΡ, Π° Π² ΡΠ°ΠΌΠΎΠΌ Π²ΡΠΏΠΈΠ²ΠΎΡ Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΎΡΡΠ°Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ² Π·Π°ΠΊΡΡΠΊΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 3. ΠΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΡΠΏΠΈΠ²ΠΎΡ ΠΈ ΡΠ°ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΠ½ΡΠ»ΠΈΡΡ Π² ΡΡΠΆΠΎΠΉ ΠΊΠ²Π°ΡΡΠΈΡΠ΅, ΠΈΠ»ΠΈ Π³Π΄Π΅ ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ. ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΡ.
ΠΠ°ΡΠ½Π΅ΠΌ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π°Π»ΠΈΠ²Π°Π½ΠΈΡ:
ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π² Π΅Π΅ Π² PourOperation, ΠΌΡ ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΈ ΠΌΡΠ΄ΡΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ, Π½ΠΎ Π²ΠΎΡ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΠΈ Ρ Π½Π°Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΠ·. ΠΠΎΠΌΠΈΠΌΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈ ΡΠ°ΠΌΠ° Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΠ°. ΠΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΡΠΈΠΊ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π»ΠΈΠ²Π°Π½ΠΈΡ:
ΠΠΎΡΠΎΡΠ½ΡΠΉ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π·Π°ΠΌΠ΅ΡΠΈΡ, ΡΡΠΎ LogAfter, LogBefore ΠΈ OnError ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°: PourLoggerBefore, PourLoggerAfter ΠΈ PourErrorLogger.
Π Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ², ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ Π²ΡΠΏΠΈΠ²ΠΎΡ ΠΈ ΡΡΠΈ β ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π΅Π²ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΠΈΡΠΎΠ³Π΅ Π²Π΅ΡΡ Π²ΡΠΏΠΈΠ²ΠΎΡ Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 14 (. ) ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠΈΠΏΠ΅ΡΠ±ΠΎΠ»Π°? ΠΠ΄Π²Π° Π»ΠΈ! Π§Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΡΠ½ΠΊΠ° Ρ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ Π³ΡΠ°Π½Π°ΡΠΎΠΉ ΡΠ°Π·Π΄ΡΠΎΠ±ΠΈΡ βΠ½Π°Π»ΠΈΠ²Π°ΡΠ΅Π»Ρβ Π½Π° Π³ΡΠ°ΡΠΈΠ½, ΡΡΠ°ΠΊΠ°Π½, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π°Π»ΠΈΠ²Π°Π½ΠΈΡ, ΡΠ΅ΡΠ²ΠΈΡ ΠΏΠΎΠ΄Π°ΡΠΈ Π²ΠΎΠ΄Ρ, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΌΠΎΠ»Π΅ΠΊΡΠ» ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ²Π°ΡΡΠ°Π» Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΡΠ°ΡΠΏΡΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π ΠΏΠΎΠ²Π΅ΡΡΡΠ΅ β ΠΎΠ½ Π½Π΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ.
ΠΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΡΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ SRP β ΡΡΠΎ ΡΠΊΠ°Π·ΠΊΠΈ ΠΈΠ· ΡΠΎΠ·ΠΎΠ²ΡΡ ΠΊΠΎΡΠΎΠ»Π΅Π²ΡΡΠ², ΠΈ ΡΡ ΠΎΠ΄ΡΡ Π²ΠΈΡΡ Π»Π°ΠΏΡΡ.
β¦ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΡΠ·Π½Π°Π² ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Srp:
«Π‘Ρ ΠΎΠΆΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π΅ΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅«. ΠΈΠ»ΠΈ βΠ’ΠΎ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅β
Π’ΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎ ΠΌΠ΅Π½ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ β ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ SRP, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π²ΡΡΠ΅, Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π΄ΠΎ Π΄ΡΠΎΠ±ΠΈΡΡ ΡΠΈΠΏΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π΄ΡΠΎΠ±ΡΡΡΡ, ΡΠΎ Π΅ΡΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π»ΠΎ «ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΡ Ρ» Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΠΆΠ΅ ΠΈ ΠΎΠ± «ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ½ΠΈΠ·Ρ». ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, SRP Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ «Π΄ΡΠΎΠ±ΠΈΡΡ ΠΏΠΎΠΊΠ° Π΄ΡΠΎΠ±ΠΈΡΡΡ», Π½ΠΎ ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΠ°ΡΡΡΡ β «Π½Π΅ ΡΠ°Π·Π΄ΡΠΎΠ±ΠΈΡΡ ΡΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΠΈ». ΠΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ Π±Π΅Π· Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΠΈ. ΠΡΠΎ Π²Π΅Π»ΠΈΠΊΠ°Ρ Π±ΠΈΡΠ²Π° Π±ΡΠΈΡΠ²Ρ ΠΠΊΠΊΠ°ΠΌΠ° Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ-ΠΎΠ±Π΅Π·ΡΡΠ½ΠΎΠΉ!
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΈΠ²ΠΎΡ Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΠ°ΡΡ ΠΏΠΎΠ»Π΅Π³ΡΠ΅. ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π΄ΡΠΎΠ±ΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΡΠΈΠΊ IPourLogger Π½Π° ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ:
Π Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ ΡΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠΎ Π΄Π»Ρ Π½Π΅Π΅ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²Π° Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΠ°. Π ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΈΡΡ ΠΈ ΠΈΠ·Π±Π°Π²Π»Π΅Π½ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠΌΠ°.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Ρ Π½Π°Ρ 5 ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠΏΠΈΠ²Π°Π½ΠΈΡ:
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΡΡΠΎΠ³ΠΎ Π·Π° ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½Ρ ΠΏΡΠΈΡΠΈΠ½Ρ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠ΅ ΡΡ ΠΎΠΆΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π»Π΅ΠΆΠ°Ρ ΡΡΠ΄ΠΎΠΌ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ
Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° «User» Π² ΡΡΡΠΎΠΊΡ.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ :
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Π΅ΡΡΡ ΡΠ²ΠΎΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ²ΠΎΠ΄ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠΎ ΠΏΠΎΠ²ΠΎΠ΄ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ Π½ΠΈΡ
ΠΎΠ±ΡΠΈΠΉ β «ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
».
Π ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ:
ΠΡΠΎ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΡΠ΅Ρ Π½Π°Ρ ΠΎΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΈ ΠΎ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ΅.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ Π³ΠΎΠ΄ΠΎΠ²ΡΡ Π²ΡΡΡΡΠΊΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π΅ Π² ΡΠ°ΠΉΠ» C:\results.txt.
ΠΡΡΡΡΠΎ ΡΠ΅ΡΠ°Π΅ΠΌ ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°:
ΠΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π΄Π²Π°:
Π ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π±ΡΠ»ΠΎ Π΅ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 10-ΡΠΈ Π±ΠΈΠ·Π½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΆΡΡΠΊΠΎΠΉ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡΡ. ΠΠ±ΡΠ΅ΠΊΡ ΡΡΠ΅ΡΠ° Π½ΡΠΆΠ΅Π½ Π±ΡΠ» ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ΠΌ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΡΠΊΠΈ ΠΈ ΠΈΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½ΡΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
ΠΠΎΡΠ»Π΅ ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°, ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ/ΠΊΠ»Π°ΡΡΡ. God ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ»Π΅Π³ΡΠ°Π», Π½ΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ 100 ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΡΡΡΠ²Π°ΡΡΡΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ.
ΠΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ ΠΏΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡΡ ΡΡΠΎΠ³ΠΎ «ΠΏΠΎΠ»Π΅Π³ΡΠ°Π²ΡΠ΅Π³ΠΎ» ΠΌΠ΅ΡΠΎΠ΄Π° β ΠΈ Π΅ΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ. Π ΡΡΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π’Π Π±ΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·Π±ΠΈΡΡ Π½Π° ΠΊΡΡΠΊΠΈ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ SRP, Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΌ.
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΠΏΠΎΠΊΠΎΠ΅ Π½Π°ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΈΠ²ΠΎΡ Ρ. ΠΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π·Ρ β ΠΌΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡΠ΄Ρ. Π ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠ΅ΠΌ Π·Π½Π°Π½ΠΈΡ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΌ 1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ SRP
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΌ 2. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΡΠ°ΠΌΠΎΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΠ½Π΅ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ SRP. ΠΠΎ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
1) ΠΠ°Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π±Π΅ Π²ΠΎΠΏΡΠΎΡ β ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ/ΠΌΠ΅ΡΠΎΠ΄/ΠΌΠΎΠ΄ΡΠ»Ρ/ΡΠ΅ΡΠ²ΠΈΡ. Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ. ( Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Brightori )
ΠΠΏΡΠΎΡΠ΅ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ
2) Π€ΠΈΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±Π°Π³Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²/ΠΊΠ»Π°ΡΡΠΎΠ². Π ΠΈΠ΄Π΅Π°Π»Π΅ β ΠΎΠ΄ΠΈΠ½.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ (Π·Π° ΡΠΈΡΡ ΠΈΠ»ΠΈ Π±Π°Π³) ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅/ΠΊΠ»Π°ΡΡΠ΅, ΡΠΎ Π²Ρ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΡΠ΅ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: ΡΠΈΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΡΠΈΠΊ. ΠΠ΅Π³Π°ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ UI-ΠΊΠΎΠ½ΡΡΠΎΠ»Π°, ΡΡ ΠΎΠΆΠ΅Π³ΠΎ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ. ΠΡΠ»ΠΈ ΡΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ 10 ΡΠ°Π·Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ 15 ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠΎΠ² β ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π²Ρ βΠΏΠ΅ΡΠ΅Π΄ΡΠΎΠ±ΠΈΠ»ΠΈβ.
ΠΡΠ»ΠΈ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «ΠΡΠ»ΠΈΡΡ Π²ΠΎΠ΄ΠΊΡ ΠΏΠΎΠ΄ ΡΡΠΎΠ»» Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΡΠΎΠ½ΡΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΡΠΈΠΊ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π²ΡΠ»ΠΈΠ²Π°Π½ΠΈΡ β ΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ ΠΊΡΠΈΠ²ΠΎ. ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°ΡΠ°ΡΡΡΡ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΡΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
4) ΠΡΠΈ ΡΡΠΎΡΠ½ΡΡΡΠ΅ΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΏΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ (ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°) Π²Ρ Π»Π΅Π·Π΅ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ/ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΡΡΠ΄Π°.
Π€ΠΈΡΠΈ, ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π° Π½Π΅ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½Ρ ΡΠ»Π°Π³Π°ΠΌΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΠΊΠΎΠ΄Π°.
ΠΠ°Ρ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΡΡΠΎ-ΡΠΎ ΠΎΠ΄Π½ΠΎ, ΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½Π° Π² Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠΈ
AllManagersManagerService β ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, God-ΠΊΠ»Π°ΡΡ
LocalPayment β Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅Ρ
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΌ 3. ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ «ΠΠΊΠΊΠ°ΠΌΠ°-first».
Π Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΡΠ½ΠΊΠ° Π½Π΅ Π·Π½Π°Π΅Ρ ΠΈ Π½Π΅ ΡΡΠ²ΡΡΠ²ΡΠ΅Ρ Π²ΡΠ΅Ρ ΡΠΎΠ½ΠΊΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΠΌΠ°Ρ Ρ. ΠΡΠΈΠ±Π°ΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ:
ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: «ΠΎΡΠΈΠ±Π°ΡΡΡΡ Π»ΡΡΡΠ΅ Π² Π±ΠΎΠ»ΡΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ», ΠΈΠ»ΠΈ «Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ β Π½Π΅ Π΄ΡΠΎΠ±ΠΈΡΠ΅». ΠΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°Ρ ΠΊΠ»Π°ΡΡ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ Π΄Π²Π΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ β ΡΠΎ ΠΎΠ½ ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠΎΠ½ΡΡΠ΅Π½ ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΈΠ»ΠΈΡΡ Π½Π° Π΄Π²Π° Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ±ΠΈΡΠ°ΡΡ ΠΆΠ΅ ΠΈΠ· ΠΎΡΠΊΠΎΠ»ΠΊΠΎΠ² ΡΡΠ΅ΠΊΠ»Π° ΡΡΠ°ΠΊΠ°Π½, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΈΠ·-Π·Π° ΡΠ°Π·ΠΌΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΠΎΡΠ° Π·Π°ΠΊΡΡΠ³Π»ΡΡΡΡΡ
Π‘ΡΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ SRP Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΠΠ ΠΈ SOLID. ΠΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΊΠ»Π°ΡΡΠ°ΠΌ, ΠΌΠΎΠ΄ΡΠ»ΡΠΌ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ. ΠΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊΠ°ΠΊ ΠΊ βΡΠΈΠ³Π°ΠΊΡ-ΡΠΈΠ³Π°ΠΊΡ-ΠΈ-Π²-ΠΏΡΠΎΠ΄β, ΡΠ°ΠΊ ΠΈ ΠΊ βΡΠΎΠΊΠ΅Ρ-ΡΠ°ΠΉΠ½Ρβ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Π²Π΅Π·Π΄Π΅ Π΄Π΅Π»Π°Ρ ΠΌΠΈΡ ΡΡΡΠΎΡΠΊΡ Π»ΡΡΡΠ΅. ΠΡΠ»ΠΈ Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ, ΡΠΎ ΡΡΠΎ Π΅Π΄Π²Π° Π»ΠΈ Π½Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π²ΡΠ΅ΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΠΈ. ΠΠ°ΡΠΈΠ½ΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅, ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π΄Π° ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ β ΡΡΡΠΎΡΡΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈ βΠ½Π΅Π΄ΠΎΠ΄ΡΠΎΠ±Π»Π΅Π½ΠΈΠ΅β Π»ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ, βΠΏΠ΅ΡΠ΅Π΄ΡΠΎΠ±Π»Π΅Π½ΠΈΠ΅β β ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, Π° Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ β ΡΠ°Π·ΡΠΌΠ° ΠΈ Π΄ΡΡΠ΅Π²Π½ΠΎΠ³ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΈΡ.
SRP Π½Π΅ Π²ΡΠ΄ΡΠΌΠ°Π½ ΠΏΡΠΈΡΠΎΠ΄ΠΎΠΉ ΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠΎΡΠ½ΠΎΠΉ Π½Π°ΡΠΊΠΈ. ΠΠ½ Π²ΡΠ»Π΅Π·Π°Π΅Ρ ΠΈΠ· Π½Π°ΡΠΈΡ Ρ Π²Π°ΠΌΠΈ Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ ΠΏΡΠΈΡ ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ.ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ·Π³Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°-ΠΎΠ±Π΅Π·ΡΡΠ½Ρ. ΠΠ½ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π°ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅Π±ΠΎΠ²Π°Π»Π° ΠΈΠ·ΡΡΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π²ΡΠΊΠ° ΡΠ΅Π»Π΅ΠΏΠ°ΡΠΈΠΈ, Π½ΠΎ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΡΠ°Π·Π²Π΅ΡΠ»Π° Π΄ΡΠΌΠΎΠ²ΡΡ Π·Π°Π²Π΅ΡΡ.

