ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, описаниС ΠΈ руководство

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

КаТдоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠΊΡ€ΡƒΠ³ нас построСно ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. Π”Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, Π³Π΄Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΈΠ· Π΅Π΅ Π²ΠΈΠ΄ΠΎΠ², всС Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. По-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π½Π΅ получаСтся.

АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

АрхитСктуру ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ стартом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π΅Π΄ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎ продуманная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” это Π·Π°Π»ΠΎΠ³ работоспособности ΠΈ удобства Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. РСакция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с высокими Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ, зависания β€” всС это ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько качСствСнно ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния.

КаТдоС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ нСскольк ΠΎ заинтСрСсованных Π»ΠΈΡ†:

ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€” Π² Π΅Π³ΠΎ интСрСсах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ бСзопасным, понятным ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ;

администратора прилоТСния β€” Π² Π΅Π³ΠΎ интСрСсах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ прилоТСния Π±Ρ‹Π»Π° понятная систСма управлСния;

Π‘Π•Πž-спСциалиста ΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΎΠ»ΠΎΠ³Π° β€” Π² ΠΈΡ… интСрСсах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π»ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ функциями ΠΈ Π±Ρ‹Π»ΠΎ конкурСнтоспособным;

Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° β€” Π² Π΅Π³ΠΎ интСрСсах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ устройству прилоТСния ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ»ΠΈ понятныС ΠΈ Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Π΅ трСбования;

Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ руководитСля β€” Π² ΠΈΡ… интСрСсах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π» прСдсказуСмым, Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ.

АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: Π²Ρ‹Π±ΠΎΡ€ ΠΈ Π²ΠΈΠ΄Ρ‹

заинтСрСсованных Π»ΠΈΡ†Π°Ρ…: Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°Ρ…, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ…, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈ Π΄Ρ€.;

миссии прилоТСния β€” ΠΎΡ‚ΡΡŽΠ΄Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‚ трСбования ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ;

Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… тСхничСских ограничСниях: Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈ ΠΈ инструмСнта, профСссионализмС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ ΠΎΠΉ систСм Π΅ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Π΅ устройств, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… создаСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ прилоТСния: разбираСмся Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅

Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ· Β«Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅Β» рассказываСт, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

ΠšΠ°Ρ‚Ρ Павловская для Skillbox Media

Π•Π²Π³Π΅Π½ΠΈΠΉ ЁлчСв

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²ΠΎ Β«Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅Β». РаньшС Π±Ρ‹Π» фулстСком, бэкСндСром ΠΈ DevOps, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΠ» ΠΎΡ‚Π΄Π΅Π»ΠΎΠΌ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄Π° ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Π» iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² GeekBrains, Π±Ρ‹Π» Π΄Π΅ΠΊΠ°Π½ΠΎΠΌ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚Π°. Бостоит Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Podlodka iOS Crew, Π²Π΅Π΄Ρ‘Ρ‚ YouTube-ΠΊΠ°Π½Π°Π» с Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠΎ Flutter. Π’ Twitter ΠΏΠΈΡˆΠ΅Ρ‚ ΠΏΠΎΠ΄ Π½ΠΈΠΊΠΎΠΌ @tygeddar.

Π― люблю ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, какая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π»ΡƒΡ‡ΡˆΠ΅. ΠœΠΎΠΆΠ΅Ρ‚, ΠΈΠ·-Π·Π° своСго Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ пСрфСкциониста ΠΈΠ»ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π° ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ лСнь ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² ΠΏΠ»ΠΎΡ…ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

Π‘ΠΏΠΎΠΉΠ»Π΅Ρ€: большС всСго я люблю Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ MVC. Π”Π°Π»ΡŒΡˆΠ΅ расскаТу, ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ½Π΅ Π½Π΅ нравятся всякиС MVVM, MVP ΠΈ VIPER. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π΅Π΄Π°Π²Π½ΠΎ я разобрался Π²ΠΎ Flux ΠΈ Π΅Ρ‘ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Redux ΠΈ понял, Ρ‡Ρ‚ΠΎ ΠΈΡ… я Ρ‚ΠΎΠΆΠ΅ нСдолюбливаю.

Π’ основС ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” Ρ‚Ρ€Π΅Π΄ Π°Π²Ρ‚ΠΎΡ€Π° Π² Twitter.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° MVC

Π― Ρ‚ΠΎΠ³Π΄Π° Π±Ρ‹Π» студСнтом, Π΄Π΅Π»Π°Π» курсовыС ΠΈ ΠΏΠ΅Ρ‚-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. Π£ Π½ΠΈΡ… Π±Ρ‹Π»Π° слоТная вёрстка ΠΈ нСпростая структура Π‘Π”, Π½ΠΎ максимально простая Π»ΠΎΠ³ΠΈΠΊΠ°. Код получался простым, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ мСня Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ устраивал.

МнС Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ написано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ инструмСнтам ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ…. Π― Π±Ρ‹Π» счастлив ΠΈ Π½Π΅ Π·Π°Π±ΠΈΠ²Π°Π» Π³ΠΎΠ»ΠΎΠ²Ρƒ Ρ‡Π΅ΠΏΡƒΡ…ΠΎΠΉ.

Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² своём ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ β€” пСрСнёс Π΅Ρ‘ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ». По Ρ„Π°ΠΊΡ‚Ρƒ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈ Π½Π΅ измСнилось, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π»Π΅ΠΆΠ°Π» Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

Π˜Π·ΡƒΡ‡Π°Ρ дискуссии Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΈ рассуТдая ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, я понял, Ρ‡Ρ‚ΠΎ «толстая» модСль ΠΌΠ½Π΅ Π½Π΅ нравится. ΠŸΡƒΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ модСль остаётся Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ дальшС управляСт Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ всё слоТнСС, Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΏΡƒΡ…Π»Π΅Π΅ (ΠΏΡ€Π°Π²Π΄Π°, Π½Π΅ ΠΊΠ°ΠΊ UIViewController Π² iOS). Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» с этим Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ, выносил Π»ΠΎΠ³ΠΈΠΊΡƒ Π² сторонниС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π» Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹, Π½ΠΎ это ΠΌΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ мСняло: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΡΠΎΡ…Ρ€Π°Π½ΡΠ»Π°ΡΡŒ, просто ΠΊΠΎΠ΄ пСрСносился ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

ΠŸΠΎΡ‡Π΅ΠΌΡƒ MVC Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π² ΠΌΠΎΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Π’ 2013 Π³ΠΎΠ΄Ρƒ я пСрСсСл Π½Π° Laravel, разобрался с Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ классов Π² PHP, Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с ООП ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» Β«Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄Β» Π‘Ρ‚ΠΈΠ²Π° МакконнСлла.

Π‘Ρ‚Π°Π»ΠΎ ясно, Ρ‡Ρ‚ΠΎ Π½Π΅ стоит ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ всё Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» β€” ΠΊΠΎΠ΄ ΠΈ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ структуру, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· MVC ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π’ Π½ΠΈΡ… появились ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сильно ΠΏΠΎΡ…ΡƒΠ΄Π΅Π» β€” ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π±Π°Π·Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π» ΠΈΡ… Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΎΡ‚ Π½ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ отправлял Π½Π° HTML-страницу.

АрхитСктура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ Π±Ρ‹Π»Π° идСальной, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ подошла Π±Ρ‹ Π½ΠΈ для ΠΎΠ΄Π½ΠΎΠΉ слоТной систСмы. Но для ΠΌΠΎΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ: ΠΊΠΎΠ΄ получался Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π° всС элСмСнты ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ довольно нСзависимы.

Как я Π΄Π΅Π»Π°Π» систСму управлСния
VDS-сСрвСром

Π’ слоТной систСмС нСльзя ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» Π²Π΅Π±- ΠΈ API-интСрфСйсы, доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, Π²Ρ‹Π½Π΅ΡΠ΅Π½Π½ΡƒΡŽ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚Π°ΠΊ: HTML ⟷ JavaScript (ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с API) ⟷ API ⟷ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ⟷ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Всё это Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° MVC.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

Когда я ΡƒΠ²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… компаниях, Ρ‚ΠΎ осознал нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… нюансов.

АрхитСктура Π½Π΅ Π΄Π°Ρ‘Ρ‚ прСимущСств. Ни ΠΎΠ΄Π½Π° продвинутая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Π±Ρ‹Π»Π° Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я Π΄Π΅Π»Π°Π» Π² самом Π½Π°Ρ‡Π°Π»Π΅. Π—Π° всё врСмя я ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈ поэтому ΠΌΠΎΠ³ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·Ρƒ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Но ΠΌΠ΅ΠΆΠ΄Ρƒ MVC ΠΈ MVP Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ β€” ΠΊΡ€ΠΎΠΌΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠΉ классов ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» Π²Ρ€ΠΎΠ΄Π΅ Ρ‚Π΅Ρ…, ΠΊΠΎΠ³Π΄Π° элСмСнты Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°.

Компании ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Одни говорят, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ MVVM, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΎ ΠΆΠ΅ самоС называСтся MVC. Π― Π²ΠΈΠ΄Π΅Π» ΠΏΡΡ‚ΡŒ MVVM-систСм, ΠΈ всС Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” VIPER, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ благодаря Π•Π³ΠΎΡ€Ρƒ Волстому Π΅ΡΡ‚ΡŒ подробная докумСнтация ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Но Π΄Π°ΠΆΠ΅ Ρ‚Π°ΠΌ Π±Ρ‹Π»ΠΈ отличия.

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚ Π»ΡƒΡ‡ΡˆΠ°Ρ. Π’Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈΠ·-Π·Π° мСйнстримности бСсполСзно. ΠšΡ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MVVM, Π½ΠΎ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠ»Π°Π΄Ρ‘Ρ‚ Π² Ρ€Π°Π·Π½Ρ‹Π΅ части ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

АрхитСктура Π½Π΅ спасёт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС ΠΎΠ½Π° Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ успСха.

Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ MVC Π½Π° самом Π΄Π΅Π»Π΅

Π― постоянно ΠΈΠ·ΡƒΡ‡Π°Π» Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ‡ΠΈΡ‚Π°Π» ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ спорил с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ, нСсколько Ρ€Π°Π· пСрСсматривал идСю MVC Π² языкС Smalltalk ΠΈ нСсколько Ρ€Π°Π· мСнял ΠΊ Π½Π΅ΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ я понял, Ρ‡Ρ‚ΠΎ MVC β€” это Π½Π΅ Ρ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ нСсколько классов для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. МодСль β€” Π½Π΅ ΠΏΡ€ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ ΠΏΡ€ΠΎ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π΄Π°Π²Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΈ ΠΏΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MV.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ с бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΈ доступом ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π±Ρ‹Π»ΠΈ ΠΈ Π΄ΠΎ MVC, ΠΈΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Главная Π·Π°Π΄Π°Ρ‡Π° MVC β€” ΡΠ²ΡΠ·Π°Ρ‚ΡŒ UI со всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ. ЕдинствСнная рСкомСндация ΠΎΡ‚ создатСля β€” ΠΏΡ€ΠΈ надобности ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ View свой фасад для Model ΠΈ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½-Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ.

View β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, Model β€” ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π—Π°Π΄Π°Ρ‡Π° Controller β€” Π½Π΅ Π±Ρ‹Ρ‚ΡŒ прослойкой ΠΌΠ΅ΠΆΠ΄Ρƒ V ΠΈ M, Π° всСго лишь ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ MVC β€” Π½Π΅ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ UI с бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ частями прилоТСния. А ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΡƒΠΆΠ΅ пускай Π΄ΡƒΠΌΠ°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€. Π­Ρ‚ΠΎ Π½Π΅ космичСская инТСнСрия.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ MVP, MVVM ΠΈΠ»ΠΈ VIPER Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ MVC, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΅Ρ‘. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π° Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ View, это стало Π΅Π³ΠΎ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ MVC Π² Apple, MVVM ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ β€” это MV, Π³Π΄Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΡƒΠ±Ρ€Π°Π»ΠΈ Π·Π° Π½Π΅Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ. Из всСх соврСмСнных MV(x) ΠΈΠΌΠ΅Π½Π½ΠΎ MVVM большС всСго ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ MVC.

ВсС эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅. Иногда слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΎ Ρ‡Ρ‘ΠΌ Ρ‚Π΅Π±Π΅ говорят, хотя Π·Π°Π΄Π°Ρ‡Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ понятнСС.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Как Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² любой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, ΠΈ ΠΈΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ стоит ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ внимания. Но это Π½Π΅ Ρ‚Π°ΠΊ. Π£ мСня Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€Π°Π²ΠΈΠ».

Π“Π»Π°Π²Π½ΠΎΠ΅ β€” рСализация. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½Π°, ΠΊΠ°ΠΊ Π΅Ρ‘ Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅. Всё зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ классы, Π³Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ элСмСнты ΠΈ ΠΊΠ°ΠΊ классы ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ВсС ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ваш стандарт, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

Model β€” ваша ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ. АрхитСктура MVC Π½Π΅ Π΄Π°Ρ‘Ρ‚ инструкций, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ прилоТСния. Π’Π°ΡˆΠ° ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² Model ΠΊΠ°ΡˆΡƒ, Π³Π΄Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° классов β€” Service, Π° вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° β€” Helper.

НуТно Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² основах. НС стоит ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° логичСски слСдуСт. Π’ΡƒΡ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ история, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, SOLID ΠΈ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Β«Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄Β» Π‘Ρ‚ΠΈΠ²Π° МакконнСлла.

Π‘ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° я Π½Π°Ρ‡Π°Π» Ρ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π£ мСня появилась ΠΊΡƒΡ‡Π° сущностСй с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ названиями ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, я создал ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ экшСнов. Π’ ΠΈΡ‚ΠΎΠ³Π΅ сам запутался, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΈ с Ρ‡Π΅ΠΌ взаимодСйствуСт.

Redux Ρ…ΠΎΡ€ΠΎΡˆΠ° для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΎΡ„Π»Π°ΠΉΠ½, Π³Π΄Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ происходит ΠΊΡƒΡ‡Π° асинхронных Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… событий. Π’Π°ΠΌ этот Π±ΠΎΠΉΠ»Π΅Ρ€ΠΏΠ»Π΅ΠΉΡ‚ стоит Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ спасёт Π²Π°ΠΌ Тизнь. Но Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ MV ΠΈ Π½Π΅ ΠΏΠ°Ρ€ΠΈΡ‚ΡŒΡΡ.

Π’Ρ‹Π²ΠΎΠ΄: Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅

На Β«Π₯Π°Π±Ρ€Π΅Β» Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ± MVC β€” Β«ΠžΡ…ΠΎΡ‚Π° Π½Π° мифичСский MVC. ΠžΠ±Π·ΠΎΡ€, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ пСрвоисточникам ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ самому» ΠΈ Β«ΠžΡ…ΠΎΡ‚Π° Π½Π° мифичСский MVC. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса». ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡ…, Ссли ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ΅Ρ‚Π΅ΡΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ β€” Π°Π²Ρ‚ΠΎΡ€ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π», Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅.

Zend Framework β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для PHP 5. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² Laminas Project.

Если ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚ΠΎΠ½ΠΊΠΈΠΉ, Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°Π»ΠΎΠΆΠ΅Π½Π° Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π° Ссли толстый, Ρ‚ΠΎ Π² самом ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅.

UIViewController β€” это класс Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ UIKit ΠΎΡ‚ Apple. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ UI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, для Π½Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ подклассы.

VDS-сСрвСр β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр, Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ VPS-сСрвСр. Π­ΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ физичСского Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ root-доступ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ОБ ΠΈ ПО.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполняСтся сразу, асинхронный β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. НапримСр, ΠΊΠΎΠ³Π΄Π° загрузится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСр.

UIKit β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ строят Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для iOS ΠΈ tvOS.

Model-View-ViewModel β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ прилоТСния. View ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° интСрфСйс ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ViewModel β€” посрСдник ΠΌΠ΅ΠΆΠ΄Ρƒ UI ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.

Model-View-Presenter β€” шаблон Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ MVC. Presenter выполняСт Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Controller, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.

АббрСвиатура VIPER ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ View β€” Interactor β€” Presenter β€” Entity β€” Router. АрхитСктура часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

Flux β€” это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ React для JavaScript.

Redux β€” открытая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для JavaScript. НуТна, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм прилоТСния. ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ клиСнтскиС ΠΈ сСрвСрныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Middleware β€” ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ПО, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈ сСрвСру ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ запросами. НапримСр, middleware ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ со старым API.

Π Π΅Π΄ΡŽΡΠ΅Ρ€ (reducer) β€” это функция, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ состояниС (state) ΠΈ дСйствиС (action) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅. Π•Ρ‘ Π·Π°Π΄Π°Ρ‡Π° β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ»ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ элСмСнту ΠΌΡ‹ΡˆΡŒΡŽ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π‘ΠΎΠΉΠ»Π΅Ρ€ΠΏΠ»Π΅ΠΉΡ‚ β€” ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Иногда ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ Π² Ρ€Π°Π·Π½Ρ‹Π΅ части прилоТСния.

Flutter β€” SDK ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΎΡ‚ Google, созданный для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для iOS ΠΈ Android.

SwiftUI β€” это ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ инструмСнтов, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс iOS-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Чистая АрхитСктура для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π₯ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Многим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ…, сСрвСрных ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌ, Ρ‚.ΠΊ. являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ построСнии Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π²Π΅Π±Π΅ ΠΎΠ½ прСдставлСн ΠΎΡ‡Π΅Π½ΡŒ скудно, хотя ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ написан Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VS Code.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ примСнСния этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π²Ρ‹ ΠΎΡ‚Π²ΡΠΆΠ΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Π‘ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ прСдставлСния Π²Π½ΡƒΡ‚Ρ€ΠΈ вашСго прилоТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ React, Preact, Vue, Mithril Π±Π΅Π· пСрСписывания бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ, Π° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π΄Π°ΠΆΠ΅ Π²ΡŒΡŽΡ…ΠΈ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Angular 1, Π²Ρ‹ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ смоТСтС пСрСвСсти Π΅Π³ΠΎ Π½Π° Angular 2+, React, Svelte, WebComponents ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ свою Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ прСдставлСния. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Angular 2+, Π½ΠΎ Π½Π΅Ρ‚Ρƒ спСциалистов для Π½Π΅Π³ΠΎ, Ρ‚ΠΎ Π²Ρ‹ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ смоТСтС пСрСвСсти ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π±Π΅Π· пСрСписывания бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ. А Π² ΠΈΡ‚ΠΎΠ³Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Ρ€Π΅ΠΌΠ²ΠΎΡ€ΠΊΠ° Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π§Ρ‚ΠΎ ΠΆΠ΅ это Π·Π° магия такая?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Чистая АрхитСктура

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° Π ΠΎΠ±Π΅Ρ€Ρ‚Π° «Чистая АрхитСктура» (Robert C.Martin Β«Clean ArchitectureΒ»). ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎ ссылкС.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ:

ДостигаСтся такая Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π·Π° счСт раздСлСния прилоТСния Π½Π° слои Service, Repository, Model. Π― ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊ Чистой АрхитСктурС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ MVC ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ слои:

ΠšΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Чистая АрхитСктура

Π’Π΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΡˆΠ»Π° большой ΠΏΡƒΡ‚ΡŒ развития, начиная ΠΎΡ‚ простого скриптования Π½Π° jquery Π΄ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… SPA ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. И сСйчас Π²Π΅Π± прилоТСния стали Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большими Ρ‡Ρ‚ΠΎ количСство бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ стало сопоставимо ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ сСрвСрныС, Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΈΡˆΡƒΡ‚ слоТныС ΠΈ большиС прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ пСрСносят бизнСс Π»ΠΎΠ³ΠΈΠΊΡƒ с сСрвСра Π½Π° Π²Π΅Π± прилоТСния для экономии Π½Π° стоимости сСрвСров, Чистая АрхитСктура ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΎΡ‚ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ².

Π’ Ρ‚ΠΎΠΆΠ΅ врСмя Ссли ваша Π·Π°Π΄Π°Ρ‡Π° просто вСрстка ΠΈ анимация Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΎΠ², Ρ‚ΠΎ Π§ΠΈΡΡ‚ΡƒΡŽ АрхитСктуру просто Π½Π΅ΠΊΡƒΠ΄Π° Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. Если ваша бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π΅ ΠΈ ваша Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ прочувствуСтС гибкости Чистой АрхитСктуры, Π½ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΠ»Π°Ρ†Π΄Π°Ρ€ΠΌΠΎΠΌ для Π²Π·Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ роста прилоТСния.

Π“Π΄Π΅ ΡƒΠΆΠ΅ примСняСтся?

Чистая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ привязана ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ»ΠΈ языку программирования. ДСсятилСтия Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для написания Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π•Π³ΠΎ ΡΡ‚Π°Π»ΠΎΠ½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… для сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Asp.Net Core, Java Spring ΠΈ NestJS. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ популярна ΠΏΡ€ΠΈ написании iOs ΠΈ Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Но Π² Π²Π΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΠ½ прСдстал Π² ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… Angular.

Π’Π°ΠΊ ΠΊΠ°ΠΊ я сам Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Typescript, Π½ΠΎ ΠΈ C# Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ‚ΠΎ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΎΠ·ΡŒΠΌΡƒ ΡΡ‚Π°Π»ΠΎΠ½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ для Asp.Net Core.

Π’ΠΎΡ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния:

Если Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ написано Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ, дальшС ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎ частям ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ для Asp.Net Core прилоТСния, Π½ΠΎ для Java Spring, WinForms, Android, React Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ ΠΊΠΎΠ΄ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, мСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ язык ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π²ΡŒΡŽΡ…ΠΎΠΉ (Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ).

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π²Π΅Π±-прилоТСниях

ЕдинствСнный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытался ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π§ΠΈΡΡ‚ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π±Ρ‹Π» Angular. Но ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ это просто уТасно, Ρ‡Ρ‚ΠΎ Π² 1, Ρ‡Ρ‚ΠΎ Π² 2+.

И ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для этого ΠΌΠ½ΠΎΠ³ΠΎ:

НачинаСм ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π§ΠΈΡΡ‚ΡƒΡŽ АрхитСктуру Π±ΡƒΠ΄Π΅ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ прилоТСния, максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚ Π² страховой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, страховыС случаи, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹ страхования ΠΈ инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° лишь малая Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, Π½ΠΎ ΠΏΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π». ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π½Π΅ΠΌ со слоя Controller, Π° View слой ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π² самом ΠΊΠΎΠ½Ρ†Π΅. А ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ создания рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Π΅Π΅.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Controller

Controller β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° взаимодСйствиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π½Π° Π²Π΅Π± страницС, Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, мобильном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² консоли линукса, ΠΈΠ»ΠΈ сСтСвой запрос, ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ IO событиС приходящСС Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π‘Π°ΠΌΡ‹ΠΉ простой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² чистой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ событиС ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ бизнСс процСссы. Π’ идСальном случаС Controller Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΏΡ€ΠΎ View, ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Web, React-Native ΠΈΠ»ΠΈ Electron.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для нашСго прилоТСния. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ Ρ‚Π°Ρ€ΠΈΡ„ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ:

Π£ нас получился ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±Π΅Π· чистой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ссли ΠΎΡ‚Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ React.Component Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ. Π’Π°ΠΊ ΠΏΠΈΡˆΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сущСствСнных нСдостатков. Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π’Π΅Π΄ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚Π°Ρ€ΠΈΡ„ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅, Π½ΠΎ ΠΈ Π½Π° Π»Π΅Π½Π΄ΠΈΠ½Π³Π΅ ΠΈ мноТСствС Π΄Ρ€ΡƒΠ³ΠΈΡ… мСст для привлСчСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ услугС.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вынСсти Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ слой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Service.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Service

Service β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° всю бизнСс Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния. Если Controller’Ρƒ понадобилось ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ β€” ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ это Ρ‡Π΅Ρ€Π΅Π· Service. Если нСскольким ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ понадобилась ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Service. Но сам слой Service Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΎ слоС Controller ΠΈ View ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вынСсСм Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π² сСрвис ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΠΌ сСрвис Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ссли нСскольким ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹, ΠΎΠ½ΠΈ смогу ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚ΡƒΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ· сСрвисов. Π’ сСрвисах Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ SOLID ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° свою Π·ΠΎΠ½Ρƒ отвСтствСнности. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ΄ΠΈΠ½ сСрвис ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвис Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π°Ρ€ΠΈΡ„Π°ΠΌΠΈ.

Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли источник Π΄Π°Π½Π½Ρ‹Ρ… помСняСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ fetch ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π½Π° websocket ΠΈΠ»ΠΈ grps ΠΈΠ»ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСстовыми? И Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π°Ρ‡Π΅ΠΌ бизнСс Π»ΠΎΠ³ΠΈΠΊΠ΅ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ источникС Π΄Π°Π½Π½Ρ‹Ρ…? Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сущСствуСт слой Repository.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Repository

Repository β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ сСрвСр, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ°ΠΌΡΡ‚ΡŒ, localstorage, sessionstorage ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слой Service ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вынСсСм сСтСвыС запросы ΠΈΠ· сСрвисов Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΡ€ΠΈ этом Π½Π΅ мСняСм:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ достаточно ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ запрос ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ любой сСрвис смоТСт ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот запрос. ПозТС ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅ трогая ΠΊΠΎΠ΄ сСрвиса ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° врСмя тСстирования.

Π’ сСрвисС UserProfilService ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Π·Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² бизнСс слоС ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ трСбования, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ запрос ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠ³Π°Ρ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π² слоС сСрвиса Π½Π΅Ρ‚Ρƒ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Controller β€” Service β€” Repository Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎ Π²ΠΊΠ»Π°Π΄ Π² вашС Π·Π°Π²Ρ‚Ρ€Π°.

Настало врСмя Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ Π·Π° Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π»ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π—Π° это ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ слой Models.

МодСли: DTO, Entities, ViewModels

Models β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° описаниС структур с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΎΠ΅ описаниС ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ½ΡΡ‚ΡŒ с Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для построСния Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… хранящихся Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ модСль профиля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈ сообщим ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ слоям Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π΅ с абстрактным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π° с Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±ΡƒΡ€Π΅Ρ‚ΠΊΡƒ

Π’Π·ΡΠ²ΡˆΠΈΡΡŒ Π·Π° написаниС нСбольшого, Π½ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ растущСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ Β«Π½Π° собствСнной ΡˆΠΊΡƒΡ€Π΅Β» ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, насколько Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°, Π½ΠΎ ΠΈ Π±Ρ‹Π»Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π°. НС Π²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ продуманная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ большим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ (просто для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Β«ΡΠΌΠ΅Ρ€Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ» отсутствия Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°). Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, растСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. И Ссли Π½Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± этом Π·Π°Ρ€Π°Π½Π΅Π΅, Ρ‚ΠΎ довольно быстро наступаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π΅ΡˆΡŒ Π΅Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° экономит ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сил, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π΅Π½Π΅Π³. А Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ опрСдСляСт Ρ‚ΠΎ, Π²Ρ‹ΠΆΠΈΠ²Π΅Ρ‚ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. И Π΄Π°ΠΆΠ΅ Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ всСго лишь ΠΎ «построСнии Ρ‚Π°Π±ΡƒΡ€Π΅Ρ‚ΠΊΠΈΒ» всС Ρ€Π°Π²Π½ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅Π΅ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

К ΠΌΠΎΠ΅ΠΌΡƒ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΡŽ оказалось, Ρ‡Ρ‚ΠΎ Π½Π° Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ вопрос: «Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ/ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ПО?Β» β€” Π½Π΅ Ρ‚Π°ΠΊ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ‚Π²Π΅Ρ‚. НС смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ½ΠΈΠ³ ΠΈ статСй, посвящСнных ΠΈ шаблонам проСктирования ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ проСктирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ SOLID (ΠΊΡ€Π°Ρ‚ΠΊΠΎ описаны Ρ‚ΡƒΡ‚, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΡƒΡ‚, Ρ‚ΡƒΡ‚ ΠΈ Ρ‚ΡƒΡ‚) ΠΈ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ ΠΊΠΎΠ΄, всС Ρ€Π°Π²Π½ΠΎ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ чувство, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Π²Π°ΠΌ Π΄Π°Π»ΠΈ мноТСство Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… инструмСнтов, Π½ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Π° ΠΊΠ°ΠΊ ΠΆΠ΅ Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±ΡƒΡ€Π΅Ρ‚ΠΊΡƒΒ».

Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π² сСбя Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ процСсс создания Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈ этом Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ пСрСстали Π±Ρ‹Ρ‚ΡŒ всСго лишь Π΄ΠΎΠ³ΠΌΠ°ΠΌΠΈ, Π° стали Π±Ρ‹ понятны ΠΈΡ… Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅). Π’ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ понятнСС ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ случаС.

Данная ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° эти вопросы хотя Π±Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» собирался для сСбя, Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΎΠ½ окаТСтся ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅. МнС данная Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Π½ΠΎ ΠΈ Π² ΠΈΠ½ΠΎΠΌ контСкстС Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° каТущиСся ΡƒΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП ΠΈ ΠΏΠΎ настоящСму ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ оказалось довольно ΠΌΠ½ΠΎΠ³ΠΎ, поэтому ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ лишь общая идСя ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ описания, Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚Π΅ΠΌΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ дальшС.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹

Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Π½Π΅ сущСствуСт общСпринятого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Β«Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния». Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ касаСтся ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, Ρ‚ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ‚Π°ΠΊ понятно ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ, Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ»ΠΎΡ…ΠΈΠΌ. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° это ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго выгодная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π΄Π΅Π»Π°ΡŽΡ‰Π°Ρ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ сопровоТдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ простым ΠΈ эффСктивным. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Π»Π΅Π³Ρ‡Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π²:

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ систСмы. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ поставлСнныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… условиях. Бюда ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ‚Π°ΠΊΠΈΠ΅ характСристики, ΠΊΠ°ΠΊ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ) ΠΈ Ρ‚.ΠΏ.

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ систСмы. Π›ΡŽΠ±ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ приходится ΠΌΠ΅Π½ΡΡ‚ΡŒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ β€” ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ трСбования, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅. Π§Π΅ΠΌ быстрСС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ внСсти измСнСния Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», Ρ‡Π΅ΠΌ мСньшС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ошибок это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ β€” Ρ‚Π΅ΠΌ Π³ΠΈΠ±Ρ‡Π΅ ΠΈ конкурСнтоспособнСС систСма. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ получаСтся, Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π°ΠΌ это ΠΏΠΎΡ‚ΠΎΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся ΠΌΠ΅Π½ΡΡ‚ΡŒ. БпроситС Ρƒ сСбя: «А Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ окаТСтся Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ?Β», «КакоС количСство ΠΊΠΎΠ΄Π° подвСргнСтся ΠΏΡ€ΠΈ этом измСнСниям?Β». ИзмСнСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° систСмы Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹. По возмоТности, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Β«Π²Ρ‹Ρ€ΡƒΠ±Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΌΠ½Π΅Β», ΠΈ послСдствия Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ошибок Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ стСпСни ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. «Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° позволяСт ΠžΠ’ΠšΠ›ΠΠ”Π«Π’ΠΠ’Π¬ принятиС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ» (Π‘ΠΎΠ± ΠœΠ°Ρ€Ρ‚ΠΈΠ½) ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Β«Ρ†Π΅Π½ΡƒΒ» ошибок.

Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ систСмы. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² систСму Π½ΠΎΠ²Ρ‹Π΅ сущности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ Π΅Π΅ основной структуры. На Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС Π² систСму ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ лишь основной ΠΈ самый Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» (ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ YAGNI β€” you ain’t gonna need it, Β«Π’Π°ΠΌ это Π½Π΅ понадобится») Но ΠΏΡ€ΠΈ этом Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсСниС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вСроятных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈΜ† Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… усилии.

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° систСмы ΠΎΠ±Π»Π°Π΄Π°Π»Π° Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Ρ‹Π»Π° способна ΠΊ измСнСниям ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ) являСтся Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄Π°ΠΆΠ΅ сформулировано Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° β€” Β«ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° открытости/закрытости» (Open-Closed Principle β€” Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ· пяти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² SOLID): ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ сущности (классы, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.ΠΏ.) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π˜Π½Ρ‹ΠΌΠΈ словами: Π”ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ/ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы Π±Π΅Π· измСнСния/пСрСписывания ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… частСй систСмы.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ слСдуСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ повСдСния ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Π»ΠΎΡΡŒ Π±Ρ‹ Π·Π° счСт написания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ), ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС появлСниС Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, Π° смоТСт Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π·Π° счСт Π΅Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. ИмСнно этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ являСтся основой Β«ΠΏΠ»Π°Π³ΠΈΠ½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹Β» (Plugin Architecture). О Ρ‚ΠΎΠΌ, Π·Π° счСт ΠΊΠ°ΠΊΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнуто, Π±ΡƒΠ΄Π΅Ρ‚ рассказано дальшС.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ срок Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π° счёт добавлСния ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½ΠΎΠ²Ρ‹Ρ… людСй. АрхитСктура Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ мноТСство людСй ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π’Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³Ρ‡Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ мСньшС ошибок ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Но тСсты Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ качСство ΠΊΠΎΠ΄Π°. МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ приходят ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Β«Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ тСстируСмости» являСтся Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ силой, автоматичСски Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌΡƒ Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ, ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ качСство: «Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «тСстируСмости» класса Π² качСствС «лакмусовой Π±ΡƒΠΌΠ°ΠΆΠΊΠΈΒ» Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° класса. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΈ строчки тСстового ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос Π² 90% случаСв ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, насколько всС Β«Ρ…ΠΎΡ€ΠΎΡˆΠΎΒ» ΠΈΠ»ΠΈ Β«ΠΏΠ»ΠΎΡ…ΠΎΒ» с Π΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ» (ИдСальная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°).

БущСствуСт цСлая мСтодология Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° основС тСстов, которая Ρ‚Π°ΠΊ ΠΈ называСтся β€” Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· тСстированиС (Test-Driven Development, TDD).

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования. БистСму ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах.

Π₯ΠΎΡ€ΠΎΡˆΠΎ структурированный, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ понятный ΠΊΠΎΠ΄. Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. Над ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ мноТСство людСй β€” ΠΎΠ΄Π½ΠΈ уходят, приходят Π½ΠΎΠ²Ρ‹Π΅. ПослС написания ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚ΠΎΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, приходится людям, Π½Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ΅ΠΌ Π² Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ быстро Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² систСмС Π½ΠΎΠ²Ρ‹ΠΌ людям. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурирован, Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ дублирования, ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. И ΠΏΠΎ возмоТности Π² систСмС Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ стандартныС, общСпринятыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ для программистов. Π§Π΅ΠΌ экзотичнСС систСма, Ρ‚Π΅ΠΌ слоТнСС Π΅Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ наимСньшСго удивлСния β€” Principle of least astonishment. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΈ ΠΊ написанию ΠΊΠΎΠ΄Π°).

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. ДСкомпозиция ΠΊΠ°ΠΊ основа

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

НС смотря Π½Π° Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π², всС ΠΆΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм считаСтся Π·Π°Π΄Π°Ρ‡Π° сниТСния слоТности. А для сниТСния слоТности Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ дСлСния Π½Π° части, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ. Иногда это Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ «раздСляй ΠΈ властвуй» (divide et impera), Π½ΠΎ ΠΏΠΎ сути Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± иСрархичСской Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. БлоТная систСма Π΄ΠΎΠ»ΠΆΠ½Π° строится ΠΈΠ· нСбольшого количСства Π±ΠΎΠ»Π΅Π΅ простых подсистСм, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, строится ΠΈΠ· частСй мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΈ Ρ‚.Π΄., Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° самыС нСбольшиС части Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ достаточно просты для нСпосрСдствСнного понимания ΠΈ создания.

Π£Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ являСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ СдинствСнно извСстным, Π½ΠΎ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Помимо сниТСния слоТности, ΠΎΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ систСмы, Π΄Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ возмоТности для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Π·Π° счСт дублирования критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… частСй.

БоотвСтствСнно, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ построСнии Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, создании Π΅Π΅ структуры, ΠΏΠΎΠ΄ этим, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, подразумСваСтся дСкомпозиция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° подсистСмы (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, сСрвисы, слои, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈ организация ΠΈΡ… взаимодСйствия Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ внСшним ΠΌΠΈΡ€ΠΎΠΌ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Ρ‡Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ нСзависимы подсистСмы, Ρ‚Π΅ΠΌ бСзопаснСС ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ±ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… частях.

«ΠΡ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ систСмы ΠΈ способы ΠΈΡ… взаимодСйствия. Π’Π°ΠΊΠΆΠ΅ это Π²Ρ‹Π±ΠΎΡ€ Ρ‚Π°ΠΊΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ измСнСнию Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.«

«ΠΡ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” это организация систСмы, воплощСнная Π² Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ с ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
БистСма β€” это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.«

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° это, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ/блочная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ систСмы. А Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ β€” какая дСкомпозиция считаСтся Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉΒ» ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ?

Β«ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°ΡΒ» дСкомпозиция

1. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠ°Ρ

НС стоит сходу Ρ€ΡƒΠ±ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° сотни классов. Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ иСрархичСски β€” сначала систСму Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ Π½Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ/подсистСмы, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² самом ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅. Π—Π°Ρ‚Π΅ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, дСлятся Π½Π° ΠΏΠΎΠ΄-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π»ΠΈΠ±ΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ систСму Π½Π° основныС смысловыС Π±Π»ΠΎΠΊΠΈ хотя Π±Ρ‹ мыслСнно. Для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π²ΡƒΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ часто оказываСтся Π²ΠΏΠΎΠ»Π½Π΅ достаточно β€” систСма Π²Π½Π°Ρ‡Π°Π»Π΅ дСлится Π½Π° подсистСмы/ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ дСлятся Π½Π° классы.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Π­Ρ‚Π° ΠΌΡ‹ΡΠ»ΡŒ, ΠΏΡ€ΠΈ всСй своСй очСвидности, Π½Π΅ Ρ‚Π°ΠΊ банальна ΠΊΠ°ΠΊ каТСтся. НапримСр, Π² Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΡΡƒΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ распространСнного Β«Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ шаблона» ΠΊΠ°ΠΊ МодСль-Π’ΠΈΠ΄-ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (MVC)? ВсСго навсСго Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΈ прСдставлСния ΠΎΡ‚ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ любоС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π½Π°Ρ‡Π°Π»Π΅ дСлится Π½Π° Π΄Π²Π° модуля β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ собствСнно самой бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ (МодСль), Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π·Π° взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈΠ»ΠΈ ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅). Π—Π°Ρ‚Π΅ΠΌ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ нСзависимо, связь ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ослабляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Β«ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒΒ» (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ способах ослаблСния связСй Π±ΡƒΠ΄Π΅Ρ‚ рассказано дальшС) ΠΈ ΠΌΡ‹ фактичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΈ вострСбованных «шаблонов», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² настоящСС врСмя.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ модулями ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ дСлСния систСмы Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ составныС части) ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ β€” «бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ°Β», Β«ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс», «доступ ΠΊ Π‘Π”Β», «связь с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ОБ».

Для обозримости Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ иСрархичСском ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚ 2 Π΄ΠΎ 7 ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ

Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ/подсистСмы Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ исходя ΠΈΠ· Ρ‚Π΅Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ систСма. Основная Π·Π°Π΄Π°Ρ‡Π° разбиваСтся Π½Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ/Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Помимо Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния ΠΌΠΎΠ΄ΡƒΠ»ΡŒ характСризуСтся Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΅ΠΌΡƒ для выполнСния Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ = Ѐункция + Π”Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Π΅ выполнСния.

ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠ³ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, лишь Π½Π° основС своих входящих Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠΎΠ΄ΡƒΠ»ΡŒ β€” это Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ кусок ΠΊΠΎΠ΄Π°, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ осмыслСнная ΠΈ закончСнная программная Π΅Π΄ΠΈΠ½ΠΈΡ†Π° (ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°), которая обСспСчиваСт Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠΎΠΉ «Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, способной ΠΊ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ» (ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ АлСксандСр).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, грамотная дСкомпозиция основываСтся, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ систСмы ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для выполнСния этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

3. High Cohesion + Low Coupling
Π‘Π°ΠΌΡ‹ΠΌ ΠΆΠ΅ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ качСства Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ являСтся Ρ‚ΠΎ, насколько ΠΌΠΎΠ΄ΡƒΠ»ΠΈ сфокусированы Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ своих Π·Π°Π΄Π°Ρ‡ ΠΈ нСзависимы. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: «ΠœΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ максимально сопряТСнны Π²Π½ΡƒΡ‚Ρ€ΠΈ (high internal cohesion) ΠΈ минимально связанны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ (low external coupling).«

БлСдствиСм High Cohesion являСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single Responsibility Principle β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· пяти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² SOLID), согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚/ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ лишь ΠΎΠ΄Π½Ρƒ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ соотвСтствСнно Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для Π΅Π³ΠΎ измСнСния.

ДСлая Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ систСмы ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π΅ качСство задавая сСбС вопросы: «ΠšΠ°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ выполняСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ?«, β€œΠΠ°ΡΠΊΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?”, β€œΠ’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ?”, β€œΠšΠ°ΠΊ сильно измСнСния Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ отразятся Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…?”

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹. Как ΠΈ Π±Ρ‹Π»ΠΎ сказано, это являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ слабо зависСли Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Но ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, имССтся ряд ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ ΠΈ шаблонов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡΠ»Π°Π±ΠΈΡ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ подсистСмами. НапримСр, Π² случаС MVC для этой Ρ†Π΅Π»ΠΈ использовался шаблон Β«ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒΒ», Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ связанности, ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ основной «инструмСнтарий Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°Β». Волько Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ всСх подсистСмах ΠΈ ΠΎΡΠ»Π°Π±Π»ΡΡ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π° всСх уровнях ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ классам, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ иСрархичСском ΡƒΡ€ΠΎΠ²Π½Π΅.

Как ΠΎΡΠ»Π°Π±Π»ΡΡ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ модулями

Для наглядности, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠ· Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ «Decoupling of Object-Oriented Systems», ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ основныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Ρ€Π΅Ρ‡ΡŒ.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

1. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹. Ѐасад

Π“Π»Π°Π²Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ систСмы, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ (ΠΈ стоящий Π·Π° Π½ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ + Абстракция + ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ):

Благодаря интСрфСйсам ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ, ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ достигаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΊΠΎΠ΄, Π±Π΅Π· измСнСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ написано (Open-Closed Principle). Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° взаимодСйствиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ описано ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π²ΠΈΠ΄Π΅ интСрфСйсов, ΠΈ Π½Π΅ завязано Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Β«Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΒ» для систСмы Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый интСрфСйс, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈ Ρ‚Π΅ΠΌ самым Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π² конструкторС ΠΈΠ»ΠΈ Β«ΠΏΠ»Π°Π³ΠΈΠ½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅Β» (plugin architecture) β€” интСрфСйс слуТит своСго Ρ€ΠΎΠ΄Π° ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ любой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с подходящим Ρ€Π°Π·ΡŠΠ΅ΠΌΠΎΠΌ. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ конструктора обСспСчиваСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ/Β«Π΄Π΅Ρ‚Π°Π»ΠΈΒ» Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅, с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ Ρ€Π°Π·ΡŠΠ΅ΠΌΠ°ΠΌΠΈ (с Ρ‚Π΅ΠΌ ΠΆΠ΅ интСрфСйсом), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ (ΠΏΡ€ΠΈ этом ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°ΡŽΡ‚ΡΡ). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ Open-Closed Principle ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚ + Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° английском.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСму Π±ΠΎΠ»Π΅Π΅ высокого уровня, рассматривая ΠΊΠ°ΠΆΠ΄ΡƒΡŽ подсистСму ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΈ игнорируя Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство. Они Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ модулям Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈ этом Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Ρ‚Π΅ΠΌ самым Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ рСализуя ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ минимального знания, ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ основой слабой связанности. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Ρ‡Π΅ΠΌ Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ/абстрактной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ интСрфСйсы ΠΈ Ρ‡Π΅ΠΌ мСньшС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΎΠ½ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Π½Π° взаимодСйствиС, Ρ‚Π΅ΠΌ Π³ΠΈΠ±Ρ‡Π΅ систСма. ΠžΡ‚ΡΡŽΠ΄Π° фактичСски слСдуСт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² SOLID β€” ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (Interface Segregation Principle), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выступаСт ΠΏΡ€ΠΎΡ‚ΠΈΠ² «толстых интСрфСйсов» ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ большиС, ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Π΅ интСрфСйсы Π½Π°Π΄ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ малСнькиС ΠΈ спСцифичСскиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… интСрфСйсов (зависящиС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) Π·Π½Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΈΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅. ЀормулируСтся ΠΎΠ½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: «ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Π·Π½Π°Ρ‚ΡŒ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚» ΠΈΠ»ΠΈ β€œΠœΠ½ΠΎΠ³ΠΎ спСциализированных интСрфСйсов Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉβ€.

Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° взаимодСйствиС ΠΈ зависимости ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ лишь с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйсов, Ρ‚Π΅ Π΅ΡΡ‚ΡŒ абстракций, Π±Π΅Π· использования Π·Π½Π°Π½ΠΈΠΉ ΠΎΠ± ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС ΠΈ структурС, Ρ‚ΠΎ фактичСски Ρ‚Π΅ΠΌ самым рСализуСтся инкапсуляция, плюс ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ/ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ повСдСния систСмы Π·Π° счСт добавлСния ΠΈ использования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π° счСт ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°. Из этого слСдуСт, Ρ‡Ρ‚ΠΎ концСпция интСрфСйсов Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС ΠΎΠ±ΠΎΠ±Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП β€” Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΠ±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Но Ρ‚ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ вопрос. Когда ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сами ΠΆΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйсы, Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ интСрфСйса модуля? ΠžΡ‚Π²Π΅Ρ‚: Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ языком шаблонов, Ρ‚ΠΎ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса модуля ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” Ѐасад.

Ѐасад β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-интСрфСйс, Π°ΠΊΠΊΡƒΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π² сСбС высокоуровнСвый Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ подсистСмой, ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π·Π° собой Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ структуру ΠΈ ΠΈΡΡ‚ΠΈΠ½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ подсистСмы. Π‘Π»ΡƒΠΆΠΈΡ‚ Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° β€” «Π²Ρ‹ ΠΏΠΈΠ½Π°Π΅Ρ‚Π΅ фасад, Π° ΠΎΠ½ Π·Π½Π°Π΅Ρ‚, ΠΊΠΎΠ³ΠΎ Ρ‚Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠ½ΡƒΡ‚ΡŒ Π² этой подсистСмС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅».

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, самый Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ интСрфСйсов ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Ρ‚Π΅ΠΌ самым ΠΎΡΠ»Π°Π±Π»ΡΡ‚ΡŒ ΠΈΡ… ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ β€” «Ѐасад». Помимо этого «Ѐасад» Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с модулями Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ всС Ρ‚Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ проСктирования классов.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π₯отя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ интСрфСйсов ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ классов (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), складываСтся Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ идСя нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зароТдаСтся. МнС Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ статСй ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ интСрфСйсы Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ для ослаблСния связанности ΠΌΠ΅ΠΆΠ΄Ρƒ модулями/слоями ΠΈ соотвСтствСнно использовался Π±Ρ‹ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ «Ѐасад». ΠšΡ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΠ΄Π΅Π» «Ѐасад» Π½Π° схСмах ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠ΅Π³ΠΎΡΡ Β«Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ шаблона» МодСль-Π’ΠΈΠ΄-ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π» Π΅Π³ΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ срСди ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², входящих Π² состав MVC (наряду с Observer ΠΈ Composite)? А вСдь ΠΎΠ½ Ρ‚Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ МодСль это Π½Π΅ класс, это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ. И Ρƒ создатСля MVC Π’Ρ€ΡŽΠ³Π²Π΅ РССнскауга ΠΎΠ½, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π±Ρ‹Π» (смотрим Β«The Model-View-Controller (MVC ). Its Past and PresentΒ», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это писалось Π² 1973 Π³ΠΎΠ΄Ρƒ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сСйчас Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ β€” Presentaition/UI Ρ‚ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Editior). Π‘Ρ‚Ρ€Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ «Ѐасад» потСрялся Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ ΠΈ вновь ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ лишь Π½Π΅Π΄Π°Π²Π½ΠΎ, Π² основном, Π² ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ MVC ΠΎΡ‚ Microsoft (Β«Microsoft Application Architecture GuideΒ»). Π’ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ слайды:

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

А Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊ соТалСнию, приходится Π·Π°Π½ΠΎΠ²ΠΎ Β«ΠΏΠ΅Ρ€Π΅ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΒ» идСю, Ρ‡Ρ‚ΠΎ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ МодСли, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅ΠΉ Π·Π° бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π° Ρ‡Π΅Ρ€Π΅Π· интСрфСйс, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ «Ѐасад», ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΎΡ‚ΠΊΡƒΠ΄Π° для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ взят Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ слайд:

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

2. Dependency Inversion. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ созданиС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ зависимостСй

НС смотря Π½Π° свою Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΆΡƒΡ‰ΡƒΡŽΡΡ простоту это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Ρ‡Π°Ρ‰Π΅ всСго. А ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹/модуля ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new ΠΈ создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ Ρ‚Π΅ΠΌ самым вмСсто зависимости ΠΎΡ‚ интСрфСйса образуСтся Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ этого нСльзя ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π³Π΄Π΅-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ. Но, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½ΡƒΠΆΠ½ΠΎ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ количСство мСст, Π³Π΄Π΅ это дСлаСтся ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ классы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ мСста, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ разбросаны ΠΏΠΎ всСму ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. РСшСниС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ созданиС Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… спСциализированных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ β€” Ρ„Π°Π±Ρ€ΠΈΠΊ, сСрвис Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², IoC-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Π’ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ смыслС Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ слСдуСт ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ СдинствСнного Π²Ρ‹Π±ΠΎΡ€Π° (Single Choice Principle), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: «Π²ΡΡΠΊΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° систСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ мноТСство Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ², ΠΈΡ… ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ извСстСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ систСмы«. Π’ этом случаС, Ссли Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ придСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ (ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ Π² рассматриваСмом Π½Π°ΠΌΠΈ случаС создания Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), Ρ‚ΠΎ достаточно Π±ΡƒΠ΄Π΅Ρ‚ произвСсти ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³ΠΎ модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится эта информация, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ останутся Π½Π΅Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ΠΈ смогут ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ.

Ну Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΊΠ°ΠΊ это дСлаСтся Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ свои «зависимости», Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Dependency Inversion.

Но, ΠΊΠ°ΠΊ ΠΈ Π±Ρ‹Π»ΠΎ сказано, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ β€” для создания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ Π½Π΅ ΠΎΡ‚ интСрфСйса, Π° ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС позволяСт шаблон Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠœΠ΅Ρ‚ΠΎΠ΄ (Factory Method).

«Π‘ΡƒΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вмСсто нСпосрСдствСнного инстанцирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· new, ΠΌΡ‹ прСдоставляСм классу-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ интСрфСйс для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊΠΎΠΉ интСрфСйс ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ использовании Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² модулях высокого уровня».

Π’ случаях, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ»ΠΈ сСмСйства взаимосвязанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², вмСсто Π€Π°Π±Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠœΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Абстрактная Π€Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory).

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ рСализуСтся шаблоном Π›ΠΎΠΊΠ°Ρ‚ΠΎΡ€ БСрвисов (Service Locator), основная идСя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ имССтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π·Π½Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС зависимости (сСрвисы), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„Π°Π±Ρ€ΠΈΠΊ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Service Locator Π½Π΅ создаёт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° фактичСски ΡƒΠΆΠ΅ содСрТит Π² сСбС инстанцированныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (ΠΈΠ»ΠΈ Π·Π½Π°Π΅Ρ‚ Π³Π΄Π΅/ΠΊΠ°ΠΊ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π° Ссли ΠΈ создаСт, Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ). Π€Π°Π±Ρ€ΠΈΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π² ΠΏΠΎΠ»Π½ΡƒΡŽ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½ΠΈΠΌ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π›ΠΎΠΊΠ°Ρ‚ΠΎΡ€ ΠΆΠ΅ сСрвисов Π²Ρ‹Π΄Π°Π΅Ρ‚ ссылки Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅, ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π²Ρ‹Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Service Locator, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ остороТным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π²Π°ΠΌΠΈ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Service Locator ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π΄Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π»ΡŽΠ±Ρ‹ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ программисту способом. Π‘Π°ΠΌ Service Locator ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ статичСским классом с Π½Π°Π±ΠΎΡ€ΠΎΠΌ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², синглСтоном ΠΈΠ»ΠΈ интСрфСйсом ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ классам Ρ‡Π΅Ρ€Π΅Π· конструктор ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Service Locator ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ ΠΈ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ создаСт нСявныС связности ΠΈ Π΄Π°Π΅Ρ‚ лишь Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρƒ ΠœΠ°Ρ€ΠΊΠ° Π‘ΠΈΠΌΠ°Π½Π°:
Service Locator is an Anti-Pattern
Abstract Factory or Service Locator?

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ называСтся β€” Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ЗависимостСй (Dependency Injection). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ зависимости ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² конструктора (Constructor Injection), Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса (Setter injection).

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ процСсс создания зависимости β€” вмСсто самого модуля созданиС зависимостСй ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ·Π²Π½Π΅. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ элСмСнта, становится пассивным β€” Π½Π΅ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚, Π° для Π½Π΅Π³ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚. Π’Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ направлСния дСйствия называСтся Π˜Π½Π²Π΅Ρ€ΡΠΈΡ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρ (Inversion of Control), ΠΈΠ»ΠΈ ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π“ΠΎΠ»Π»ΠΈΠ²ΡƒΠ΄Π° β€” «НС Π·Π²ΠΎΠ½ΠΈΡ‚Π΅ Π½Π°ΠΌ, ΠΌΡ‹ сами Π²Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠΌΒ».

Π­Ρ‚ΠΎ самоС Π³ΠΈΠ±ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π΄Π°ΡŽΡ‰Π΅Π΅ модулям Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡ‚ΡŒ. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Β«ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности» β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ сфокусирован Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ Π½ΠΈ ΠΎ Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ всСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ «спСциалист» (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ зависимостями ΠΈ ΠΈΡ… внСдрСниями занимаСтся Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ β€” IoC-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€).

По сути, здСсь всС ΠΊΠ°ΠΊ Π² ΠΆΠΈΠ·Π½ΠΈ: Π² Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ программисты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚, Π° столы, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΈΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠ°Π΅Ρ‚ ΠΈ обСспСчиваСт ΠΊΠ»Π°Π΄ΠΎΠ²Ρ‰ΠΈΠΊ. Или, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ конструктора β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°Ρ…, сборкой конструктора занимаСтся ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π° Π½Π΅ сами Π΄Π΅Ρ‚Π°Π»ΠΈ.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΎ способах создания ΠΈ получСния зависимостСй ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π΄ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ хотя Π°Π²Ρ‚ΠΎΡ€ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎ Dependency Inversion, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Inversion of Control; Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² русской Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ содСрТится ошибка ΠΈ этим Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌ Π΄Π°Π½Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ опрСдСлСния). А ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Inversion of Control (вмСстС с Dependency Injection ΠΈ Service Locator) Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ разбираСтся ΠœΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΌ Π€Π°ΡƒΠ»Π΅Ρ€ΠΎΠΌ ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ ΠΎΠ±Π΅ΠΈΡ… Π΅Π³ΠΎ статСй: «Inversion of Control Containers and the Dependency Injection pattern» ΠΈ β€œInversion of Control”.

НС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС интСрфСйсов для описания зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ модулями (Dependency Inversion) + ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ созданиС ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ этих зависимостСй (ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Dependency Injection) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ/Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°ΠΌΠΈ для сниТСния связанности. Они слуТат Ρ‚Π΅ΠΌ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ дСрТится слабая ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ измСнСниям, ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ°Π»ΠΎ смысла. Но, Ссли с Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ всС Π² порядкС, Ρ‚ΠΎ Π·Π½Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ.

3. Π—Π°ΠΌΠ΅Π½Π° прямых зависимостСй Π½Π° ΠΎΠ±ΠΌΠ΅Π½ сообщСниями

Иногда ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΠΈΠ·Π²Π΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ события/измСнСния ΠΈ Π΅ΠΌΡƒ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ с этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ. Π’ этом случаС модулям вовсС Π½Π΅Ρ‚ нСобходимости Β«Π·Π½Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅Β», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ прямыС ссылки ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно, Π° достаточно всСго лишь ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ сообщСниями (messages) ΠΈΠ»ΠΈ событиями (events).

Бвязь ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΠΌΠ΅Π½ сообщСниями являСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слабой, Ρ‡Π΅ΠΌ прямая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ рСализуСтся ΠΎΠ½Π° Ρ‡Π°Ρ‰Π΅ всСго с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… шаблонов:

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ взаимодСйствия посрСдством рассылки сообщСний ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ «бонус» β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сущСствования «подписчиков» Π½Π° Β«ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅Β» (Ρ‚.Π΅. рассылаСмыС) сообщСния. ΠšΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎ спроСктированная подобная систСма допускаСт Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² любоС врСмя.

ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² аэропорту. ВсС сообщСния, исходящиС ΠΎΡ‚ самолСтов, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² башню управлСния диспСтчСру, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ самолСтами Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. А диспСтчСр ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ самолСты ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π»Π΅Ρ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ°Π΄ΠΈΡ‚ΡŒΡΡ, ΠΈ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ отправляСт самолСтам ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΡƒΡ‚.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «простыС сообщСния, Π½ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Π°ΠΊΠΎΠ΅ взаимодСйствиС описываСтся шаблономКоманда (Command). Π‘ΡƒΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² инкапсулировании запроса Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ дСйствия Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (фактичСски этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит ΠΎΠ΄ΠΈΠ½ СдинствСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ execute()), Ρ‡Ρ‚ΠΎ позволяСт Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ это дСйствиС Π΄Ρ€ΡƒΠ³ΠΈΠΌ модулям Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ-ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π°Π΄ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠšΡ€Π°Ρ‚ΠΊΠΎ рассмотрСнтут, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π³Π»Π°Π²Π° ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Π±Π°Π½Π΄Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Ρ‚ΡƒΡ‚, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π°Ρ…Π°Π±Ρ€Π΅.

4. Π—Π°ΠΌΠ΅Π½Π° прямых зависимостСй Π½Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‰Π΅Π΅ ядро

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±ΠΎΠ±Ρ‰Π°Π΅Ρ‚ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ идСю Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² шаблонС Β«ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΊΒ». Когда Π² систСмС присутствуСт большоС количСство ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΈΡ… прямоС взаимодСйствиС Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ становится слишком слоТным. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ смысл взаимодСйствиС «всС со всСми» Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° взаимодСйствиС Β«ΠΎΠ΄ΠΈΠ½ со всСми». Для этого вводится Π½Π΅ΠΊΠΈΠΉ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ посрСдник, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ ядро прилоТСния, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ»ΠΈ шина Π΄Π°Π½Π½Ρ‹Ρ…, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ становятся нСзависимыми Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ сСрвисы этого ядра ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ содСрТащСйся Ρ‚Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. РСализация этой ΠΈΠ΄Π΅ΠΈ позволяСт модулям-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· посрСдника ΠΈ ΠΏΡ€ΠΈ этом Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ.

Π―Π΄Ρ€ΠΎ-посрСдник ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‚ΡŒ ΠΎ модулях-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° apache ), Ρ‚Π°ΠΊ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, нСзависимым ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… Π½Π΅ Π·Π½Π°Ρ‚ΡŒ. Π’ сущности ΠΈΠΌΠ΅Π½Π½ΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² «шаблонС» МодСль-Π’ΠΈΠ΄-ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (MVC), Π³Π΄Π΅ с ΠΎΠ΄Π½ΠΎΠΉ МодСлью (ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ ядром ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ‰ΠΈΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ синхронно ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π·Π½Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅, Π° МодСль Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Π½ΠΈΡ…. Ничто Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйсы, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

ΠžΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ эта идСя Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€, Π³Π΄Π΅ нСзависимыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, Π·Π²ΡƒΠΊ, Ρ„ΠΈΠ·ΠΈΠΊΡƒ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ядро (модСль), Π³Π΄Π΅ хранятся всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ состоянии ΠΈΠ³Ρ€Ρ‹ ΠΈ Π΅Π΅ пСрсонаТах. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ MVC, Π² ΠΈΠ³Ρ€Π°Ρ… согласованиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с ядром (модСлью) происходит Π½Π΅ Π·Π° счСт шаблона Β«ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒΒ», Π° ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ само ΠΏΠΎ сСбС являСтся интСрСсным Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ вСсьма ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ Β«Π±Π΅Π³ΡƒΡ‰Π΅ΠΉΒ» Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ.

5. Π—Π°ΠΊΠΎΠ½ Π”Π΅ΠΌΠ΅Ρ‚Ρ€Ρ‹ (law of Demeter)

Π—Π°ΠΊΠΎΠ½ Π”Π΅ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ использованиС нСявных зависимостСй: «ΠžΠ±ΡŠΠ΅ΠΊΡ‚ A Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ нСпосрСдствСнный доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ C, Ссли Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° A Π΅ΡΡ‚ΡŒ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ B ΠΈ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° B Π΅ΡΡ‚ΡŒ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ C«. Java-ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС зависимости Π² ΠΊΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ «явными» β€” классы/ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «свои зависимости» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»Π΅Π·Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΈΡ… ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. ΠšΡ€Π°Ρ‚ΠΊΠΎ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ Π΅Ρ‰Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: «Π’заимодСйствуй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с нСпосрСдствСнными Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ, Π° Π½Π΅ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ Π΄Ρ€ΡƒΠ·Π΅ΠΉ«. Π’Π΅ΠΌ самым достигаСтся мСньшая ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ большая Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.

Π—Π°ΠΊΠΎΠ½ Π”Π΅ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠΈΠΉΡΡ Β«ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ минимального знания», ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ основой слабой связанности ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚/ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΎ структурС ΠΈ свойствах Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²/ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‡Π΅Π³ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ собствСнныС ΠΏΠΎΠ΄ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Аналогия ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ: Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ собака ΠΏΠΎΠ±Π΅ΠΆΠ°Π»Π°, Π³Π»ΡƒΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π»Π°ΠΏΠ°ΠΌΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ собакС, Π° ΠΎΠ½Π° ΡƒΠΆΠ΅ разбСрётся со своими Π»Π°ΠΏΠ°ΠΌΠΈ сама.

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

ΠžΠ΄Π½Ρƒ ΠΈΠ· самых ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… связСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Π°Π΅Ρ‚ наслСдованиС, поэтому, ΠΏΠΎ возмоТности, Π΅Π³ΠΎ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ. Π­Ρ‚Π° Ρ‚Π΅ΠΌΠ° Ρ…ΠΎΡ€ΠΎΡˆΠΎ раскрыта Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π“Π΅Ρ€Π±Π° Π‘Π°Ρ‚Ρ‚Π΅Ρ€Π° β€” Β«ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ наслСдованию».

ΠœΠΎΠ³Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° шаблон Π”Π΅Π»Π΅Π³Π°Ρ‚ (Delegation/Delegate) ΠΈ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΈΠ· ΠΈΠ³Ρ€ шаблон ΠšΠΎΠΌΠΏΠΎΠ½Π΅Ρ‚ (Component), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описан Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Game Programming PatternsΒ» (ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π³Π»Π°Π²Π° ΠΈΠ· этой ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° английском ΠΈ Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄).

Π§Ρ‚ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ΄Π΅ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ…, посвящСнных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€. Game Programming Patterns β€” большой сайт с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ описаниСм ΠΌΠ½ΠΎΠ³ΠΈΡ… шаблонов ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΡ… примСнСния ΠΊ Π·Π°Π΄Π°Ρ‡Π΅ создания ΠΈΠ³Ρ€ (оказываСтся, Π΅ΡΡ‚ΡŒ ΡƒΠΆΠ΅ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ β€” Β«Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ программирования», спасибо strannik_k Π·Π° ссылку). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ‚ΡŒΡ «Гибкая ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€Β» (ΠΈ Π΅Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». НуТно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π²ΠΈΠ΄Ρƒ Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ шаблоном «ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ»).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *