10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

ЧСсто срСщам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Ρ‡ΡƒΠ²Π°Π»ΠΈ Π·Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ SOLID (Π½ΠΈΠ΅ Ρ€Π°Π·ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° тях Ρ‚ΡƒΠΊ. β€” ΠŸΠ΅Ρ€.) ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ (ООП), ΠΈΠ»ΠΈ са Ρ‡ΡƒΠ²Π°Π»ΠΈ, Π½ΠΎ Π½Π΅ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π°. Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ опишСм прСдимствата Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° ООП, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π°Ρ‚Π° ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°. Някои ΠΎΡ‚ тях са Π΄ΠΎΠ±Ρ€Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈ β€” Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ статията Ρ‰Π΅ бъдС ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π·Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ΠΈ, ΠΈ Π·Π° ΠΎΠΏΠΈΡ‚Π½ΠΈ програмисти.

НапомнямС: Π·Π° всички Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π½Π° "Π₯Π°Π±Ρ€Π°" β€” ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° ΠΎΡ‚ 10 000 Ρ€ΡƒΠ±Π»ΠΈ ΠΏΡ€ΠΈ записванС Π½Π° всСки курс Π½Π° Skillbox с промоционалния ΠΊΠΎΠ΄ "Π₯Π°Π±Ρ€".

Skillbox ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°: ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅Π½ ΠΎΠ½Π»Π°ΠΉΠ½ курс "Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ".

DRY (Don’t Repeat Yourself)

Доста прост ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, чиято ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ ясна ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ: "НС сС повтаряй". Π—Π° програмиста Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° нСобходимостта Π΄Π° сС избягва Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° абстракция Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°.

Ако Π² ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° Π΄Π²Π΅ повтарящи сС ΡƒΡ‡Π°ΡΡ‚ΡŠΠΊΠ°, Ρ‚Π΅ трябва Π΄Π° сС обСдинят Π² Π΅Π΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄. Ако фиксирано Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ вСднъТ, Ρ‚ΠΎ Π΅ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚Π΅ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π° константа.

Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° сС опрости ΠΊΠΎΠ΄ΡŠΡ‚ ΠΈ Π΄Π° сС улСсни Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ основната Π·Π°Π΄Π°Ρ‡Π° Π½Π° ООП. НС трябва ΠΈ Π΄Π° сС злоупотрСбява с ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΊΠΎΠ΄ няма Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½ΠΈΡ‚ΠΎ с OrderId, Π½ΠΈΡ‚ΠΎ с SSN.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»Π°Ρ†ΠΈΡ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ постоянно сС Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΊΠΎΠ΄ΡŠΡ‚ трябва Π΄Π° бъдС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½, трябва Π΄Π° сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° си опроститС ΠΆΠΈΠ²ΠΎΡ‚Π° с инкапсулация. Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ тСстванС ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π°Ρ‚Π° Π±Π°Π·Π° ΠΎΡ‚ ΠΊΠΎΠ΄. Π•Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅.

Ако ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Ρ‚Π΅ Π½Π° Java, ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ private Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° отворСност/закритост

Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ лСсно ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΠΊΠΈ слСдното Ρ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΠ΅: "ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ (класовС, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.Π½.) трябва Π΄Π° са ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π½ΠΎ Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π·Π° модификация." На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° позволят промяна Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ си Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° изходния ΠΊΠΎΠ΄.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π΅ Π²Π°ΠΆΠ΅Π½, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² изходния ΠΊΠΎΠ΄ изискват Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΏΡ€Π΅Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅, ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΎ тСстванС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ. ΠšΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ слСдва ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° отворСност/закритост, Π½Π΅ сС промСня ΠΏΡ€ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π·Π°Ρ‚ΠΎΠ²Π° с Π½Π΅Π³ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π²Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ.

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

Ако сС Π½Π°Π»ΠΎΠΆΠΈ Π½Π΅Ρ‰ΠΎ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Ρ‰Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‰Π΅ трябва Π΄Π° сС промСнят всички ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ ΠΎΡ‚ ΠΊΠΎΠ΄Π°, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с нСобходимия Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚.

ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π½Π° отворСност-затворСност Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° SOLID.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π½Π° СдинствСната отговорност (SRP)

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΡ‚ Π½Π°Π±ΠΎΡ€a SOLID. Π’ΠΎΠΉ гласи, Ρ‡Π΅ "ΠΈΠΌΠ° само Π΅Π΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, която Π²ΠΎΠ΄ΠΈ Π΄ΠΎ промяна Π½Π° класа". ΠšΠ»Π°ΡΡŠΡ‚ Ρ€Π΅ΡˆΠ°Π²Π° само Π΅Π΄Π½Π° Π·Π°Π΄Π°Ρ‡Π°. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° няколко ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π½ΠΎ всСки ΠΎΡ‚ тях сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° само Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ‰Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°. Всички ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈ свойства трябва Π΄Π° слуТат СдинствСно Π½Π° Ρ‚ΠΎΠ²Π°.

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

ЦСнността Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Ρ‚ΠΎΠΉ отслабва Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° софтуСра ΠΈ ΠΊΠΎΠ΄Π°. Ако Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΅Π΄Π½Π° функционалност Π² клас, Ρ‚ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π΄Π½Π°Ρ‚Π° ΠΎΡ‚ тях, ΠΈΠΌΠ° голяма вСроятност Π΄Π° ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π°, ΡΠ²ΡŠΡ€Π·Π°Π½Π° с ΠΏΡŠΡ€Π²Π°Ρ‚Π°. И Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ Π½Π° тСстванС, Π·Π° Π΄Π° сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚ всички ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π½Π° инвСрсия Π½Π° зависимоститС (DIP)

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

По-Π³ΠΎΡ€Π΅ Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΊΠΎΠ΄, Π² ΠΊΠΎΠΉΡ‚ΠΎ AppManager зависим ΠΎΡ‚ EventLogWriter, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΡ‚ своя страна Π΅ тясно ΡΠ²ΡŠΡ€Π·Π°Π½ с AppManager. Ако Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, Π±ΠΈΠ»ΠΎ Ρ‚ΠΎ push, SMS ΠΈΠ»ΠΈ email, трябва Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ класа AppManager.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅ΡˆΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° DIP. Π’Π°ΠΊΠ° вмСсто AppManager, Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ EventLogWriter, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС Π²Π½Π΅Π΄Ρ€Π΅Π½ Ρ‡Ρ€Π΅Π· Ρ€Π°ΠΌΠΊΠ°.

DIP Π΄Π°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄Π° замСнятС ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈ, промСняйки ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π° зависимостта. Π’ΠΎΠ²Π° Π΄Π°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° промСнятС Π΅Π΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ», Π±Π΅Π· Π΄Π° влияСтС Π½Π° останалитС.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ вмСсто наслСдяванС

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ са наслСдяванС ΠΈ композиция, ΠΊΠ°Ρ‚ΠΎ всСки ΠΎΡ‚ тях ΠΈΠΌΠ° свои прСдимства ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ. ОбикновСно ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ сС ΠΎΡ‚Π΄Π°Π²Π° Π½Π° втория, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ ΠΏΠΎ-гъвкав.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡΡ‚Π° позволява Π΄Π° промСнятС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° класа ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС, Ρ‡Ρ€Π΅Π· настройка Π½Π° свойствата ΠΌΡƒ. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° интСрфСйси сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΡŠΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΏΠΎ-гъвкава рСализация.

Π”ΠΎΡ€ΠΈ "Effective Java" Π½Π° Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ… ΡΡŠΠ²Π΅Ρ‚Π²Π° Π΄Π° сС ΠΎΡ‚Π΄Π°Π²Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π½Π° композицията, Π° Π½Π΅ Π½Π° наслСдяванСто.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π½Π° подмяната Π½Π° Π‘Π°Ρ€Π±Π°Ρ€Π° Лисков (LSP)

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΡ‚ инструмСнтариума SOLID. Π’ΠΎΠΉ гласи, Ρ‡Π΅ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ² трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈ с супСртитС. ВоСст ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ работят с супСрклас, трябва Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π±Π΅Π·ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ Π΄Π° работят ΠΈ с Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ подкласовС.

LSP Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ ΠΊΠ°ΠΊΡ‚ΠΎ с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° СдинствСна отговорност, Ρ‚Π°ΠΊΠ° ΠΈ с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° отговорноститС. Ако ΠΊΠ»Π°ΡΡŠΡ‚ прСдоставя ΠΏΠΎΠ²Π΅Ρ‡Π΅ функционалности ΠΎΡ‚ подклас, Ρ‚ΠΎ послСдният няма Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°ΠΉΠΊΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ.

Π•Ρ‚ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈ Π½Π° LSP.

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

ΠœΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ area(Rectangle r) прСсмята ΠΏΠ»ΠΎΡ‰Ρ‚Π° Π½Π° Rectangle. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‰Π΅ сС сринС слСд ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Square, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Square Π½Π΅ Π΅ Ρ‚ΠΈΠΏ Rectangle Ρ‚ΡƒΠΊ. Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° LSP, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към Π±Π°Π·ΠΎΠ²ΠΈ класовС, трябва Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ класовС Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ инструкции.

Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, ΠΊΠΎΠΉΡ‚ΠΎ прСдставлява спСцифично ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Ρ‚ΠΈΠΏ, Π±Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΡ‚ Π‘Π°Ρ€Π±Π°Ρ€Π° Лисков ΠΏΡ€Π΅Π· 1987 Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° конфСрСнция с основСн Π΄ΠΎΠΊΠ»Π°Π΄, ΠΎΠ·Π°Π³Π»Π°Π²Π΅Π½ β€žΠ”Π°Π½Π½ΠΈ ΠΈ ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡβ€œ β€” ΠΎΡ‚Ρ‚Π°ΠΌ ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ ΠΌΡƒ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° интСрфСйса (ISP)

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° SOLID. Π‘ΠΏΠΎΡ€Π΅Π΄ Π½Π΅Π³ΠΎ интСрфСйс, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½Π΅ трябва Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½. Π‘Π»Π΅Π΄Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° систСмата Π΄Π° останС гъвкава ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° Π·Π° Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€Π°Π½Π΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

Π’Π°Π·ΠΈ ситуация Π½Π°ΠΉ-чСсто възниква, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° няколко функционалности, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π½ΡƒΠΆΠ΄Π°Π΅ само ΠΎΡ‚ Π΅Π΄Π½Π°.

Въй ΠΊΠ°Ρ‚ΠΎ написванСто Π½Π° интСрфСйс Π΅ слоТна Π·Π°Π΄Π°Ρ‡Π°, слСд Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΌΡƒ, промяната ΠΌΡƒ Π±Π΅Π· Π΄Π° сС Π½Π°Ρ€ΡƒΡˆΠΈ Π½Π΅Ρ‰ΠΎ, Ρ‰Π΅ бъдС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ISP Π² Java Π΅, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ всички ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈ Π΅Π΄Π²Π° слСд Ρ‚ΠΎΠ²Π° Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ класовС. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π΄Π°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ броят Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅.

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π·Π° интСрфСйс, Π° Π½Π΅ Π·Π° рСализация

Π’ΡƒΠΊ всичко Π΅ ясно ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ. ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ създаванС Π½Π° гъвкав ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с всяка Π½ΠΎΠ²Π° рСализация Π½Π° интСрфСйса.

Врябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚ΠΈΠΏΡŠΡ‚ интСрфСйс Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π·Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° SuperClass, Π° Π½Π΅ SubClass.

ВоСст:

List numbers= getNumbers();

А нС:

ArrayList numbers = getNumbers();

Π•Ρ‚ΠΎ практичСска рСализация Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС спомСнава ΠΏΠΎ-Π³ΠΎΡ€Π΅.

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Π½Π΅

ЧСсто срСщан ΠΏΡ€ΠΈΠΌΠ΅Ρ€ са ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals() ΠΈ hashCode() Π² Java. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС сравнят Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡ‚Π°, Ρ‚ΠΎΠ²Π° дСйствиС сС Π΄Π΅Π»Π΅Π³ΠΈΡ€Π° Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ клас вмСсто Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π΅ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ относитСлно лСсната промяна Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠΉ Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΈ Π·Π° Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ.

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅

Всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ позволяват писанС Π½Π° ΠΏΠΎ-гъвкав, красив ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΊΠΎΠ΄ с висока ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ ΠΈ ниска зависимост. Π Π°Π·Π±ΠΈΡ€Π° сС, тСорията Π΅ Π΄ΠΎΠ±Ρ€Π΅, Π½ΠΎ Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ наистина Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ знания, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° слСд усвояванСто Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° ООП ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° шаблони Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ‰ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° софтуСр.

Skillbox ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster