πŸ’¬Π§Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ «Команда» ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Go?



πŸ“ŒΠšΠΎΠΌΠ°Π½Π΄Π°Β β€” это повСдСнчСский ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ запросы ΠΈΠ»ΠΈ простыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π­Ρ‚ΠΎ позволяСт ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρƒ.



❗️В описании ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠ΅ понятия, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Класс, ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Абстрактный класс. ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ Go, это ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π’ΠΈΠΏ, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого Π’ΠΈΠΏΠ° ΠΈ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ. Π’Π°ΠΊΠΆΠ΅ Π² Go вмСсто общСпринятого наслСдования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ встраиваниС.



πŸ“ŒΠ’ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ Команда ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ понятиями:



β€’ Command β€” запрос Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

β€’ Receiver β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ;

β€’ Invoker β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ запроса



πŸ“ŒΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ отдСляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€, это ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.



πŸ“ŒΠ”Π»Ρ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ трСбуСтся:



1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ абстрактный класс, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

2. Класс ConcreteCommand, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

3. Класс Invoker, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€Π°, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΅Ρ‘ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

4. Класс Receiver, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ получатСля ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ



πŸ“ŒInvoker ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Invoker, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°.



πŸ“ŒConcreteCommand содСрТит Π² сСбС запросы ΠΊ Receiver, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Receiver содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ дСйствий (Actions), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ ΠΈΠ· ConcreteCommand.