--- aliases: tags: - maturity/🌱 date: 2024-11-24 --- Часто Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° считаСтся Π°Π½Ρ‚ΠΈΡˆΠ°Π±Π»ΠΎΠ½ΠΎΠΌ, ΠΈ сущСствуСт стрСмлСниС ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ [[efficiency/Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π°|Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°]] ΠΈ выдСлСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ классы. Однако Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β€” это ΠΏΠ»ΠΎΡ…ΠΎ, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ. НапримСр, ==Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° участки ΠΊΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΠΎΠΌ для Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ развития Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ==, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° абстракция Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ снизит [[Π§ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄|Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ]]. Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ являСтся ошибкой, являСтся ситуация, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ выполняСт ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅, Π½ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’Π°ΠΊΠΈΠ΅ ==Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ участки ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСзависимо, Π² зависимости ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ==. НапримСр, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ спСцифики ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ случая, сохраняя свою ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. **Когда Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ допустимо** - **НСзависимоС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ**. Если Π΄Π²Π° участка ΠΊΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» для Ρ€Π°Π·Π½ΠΎΠ³ΠΎ развития Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. - **ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° понимания**. Иногда нСбольшоС Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‰Π΅ для понимания, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ содСрТит всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для выполнСния своСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π±Π΅Π· излишнСй зависимости ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. - **ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ абстракции**. ΠŸΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ оптимизация ΠΈ созданиС абстракций ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ созданию излишнС слоТных конструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ услоТнСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π² систСмС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ² сущСствуСт Π΄Π²Π° ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для расчСта скидок, Π½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ расчСта скидок для Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ расчСта скидок для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²: ```java public class RetailCustomerDiscountCalculator { public double calculateDiscount(Order order) { // Π›ΠΎΠ³ΠΈΠΊΠ° расчСта скидки для Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° double discount = 0; if (order.getTotalAmount() > 100) { discount = 10; } // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° return discount; } } public class CorporateCustomerDiscountCalculator { public double calculateDiscount(Order order) { // Π›ΠΎΠ³ΠΈΠΊΠ° расчСта скидки для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° double discount = 0; if (order.getTotalAmount() > 500) { discount = 15; } // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² return discount; } } ``` ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ `calculateDiscount` Π² ΠΎΠ±ΠΎΠΈΡ… классах ΠΈΠΌΠ΅ΡŽΡ‚ ΡΡ…ΠΎΠΆΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΈ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Однако, ΠΏΡ€Π°Π²ΠΈΠ»Π° расчСта скидок для Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… направлСниях. НапримСр, для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΡΡ спСцифичСскиС условия, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ скидки Π·Π° объСм ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°ΠΊΡ†ΠΈΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ для Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ сСзонныС прСдлоТСния. ОбъСдинСниС этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ ΡΠΈΠ»ΡŒΠ½ΡƒΡŽ [[architecture/Π‘Π²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ|ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ]] ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ бизнСс-ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ услоТнило Π±Ρ‹ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ тСстированиС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ измСнСния Π² ΠΎΠ΄Π½ΠΎΠΉ части Π»ΠΎΠ³ΠΈΠΊΠΈ скидок Π·Π°Ρ‚Ρ€ ΠΎΠ½ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Π΄Π°ΠΆΠ΅ Ссли для этого Π½Π΅Ρ‚ нСобходимости, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ дальнСйшСС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ развития ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части систСмы. *** ## ΠœΠ΅Ρ‚Π° информация **ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] **Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: **Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: **Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-11-24]] **Автор**:: ### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ - ### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ