π SOLID
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ΅ΡΠΈΠ» Π·Π°ΡΡΠΎΠ½ΡΡΡ ΡΠ΅ΠΌΡ ΠΏΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΡ ΠΎΠ½ΠΈ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ:
- ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (Single Responsibility Principle, SRP) - ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
- ΠΡΠΈΠ½ΡΠΈΠΏ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ (Open/Closed Principle, OCP) - ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
- ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ² (Liskov Substitution Principle, LSP) - ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π½Π° ΡΠ²ΠΎΠΈΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Interface Segregation Principle, ISP) - ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
- ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Inversion Principle, DIP) - Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠ±Π° ΡΠΈΠΏΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ
S. ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
Single Responsibility Principle, Π΄Π°Π»Π΅Π΅ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡ SRP.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ SRP, ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ΅ΡΠ°Π» ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π° ΠΎΠ΄ΠΈΠ½ Π°ΡΠΏΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ SRP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΠΉ, Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° Π΄ΡΡΠ³ΡΡ.
ΠΠ°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° SRP ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Β«ΡΠ°Π·Π΄ΡΡΠΎΠΌΡΒ» ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΡΠ±ΠΎΡΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
O. ΠΡΠΈΠ½ΡΠΈΠΏ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ
Open/Closed Principle aka OCP Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ (ΠΊΠ»Π°ΡΡΡ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ.Π΄.) Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ, Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ.
ΠΡΠΈΠ½ΡΠΈΠΏ OCP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΡΡΠ΅Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ (resistance to change) ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° OCP: Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΡΠ°Π½ΠΈΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π½ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π°.
L. ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ²
Liskov Substitution Principle ΠΈΠ»ΠΈ ΠΆΠ΅ LSP - Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ² (Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ²). Π’ΠΎ Π΅ΡΡΡ, Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ²ΠΎΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° LSP ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° LSP: Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎ Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Β«ΠΠΈΠ²ΠΎΡΠ½ΠΎΠ΅Β», Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Β«ΠΠΈΡΠ°ΡΡΡΡΒ». ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Β«ΠΠΎΡΠΊΠ°Β», ΡΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Β«ΠΠΈΡΠ°ΡΡΡΡΒ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Β«ΠΠΈΡΠ°ΡΡΡΡΒ» Π² ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ΅ Β«ΠΠΎΡΠΊΠ°Β» Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ½Π°ΡΠ΅, ΡΠΎ ΡΡΠΎ Π½Π°ΡΡΡΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ LSP.
I. ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
Interface Segregation Principle ΠΎΠ½ ΠΆΠ΅ ISP Π³Π»Π°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π».
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌ Π½ΡΠΆΠ½Ρ, ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ.
D. ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
Dependency Inversion Principle ΠΈΠ»ΠΈ ΠΆΠ΅ DIP Π³Π»Π°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π° ΠΎΠ±Π° ΡΠΈΠΏΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈΠ»ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ Π²Π»ΠΈΡΡΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ Π»Π΅Π³ΠΊΠΎΠΉ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΡΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΈΠ΅, ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠ΅Π±Ρ ΡΠΎΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΡ ΠΎ Π½ΠΈΡ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ (ΡΡΠΎ Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ).