π¬Π§ΡΠΎ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΡΡΠ΅ΡΠ½ Β«ΠΠΎΠΌΠ°Π½Π΄Π°Β» ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° Go?
πΠΠΎΠΌΠ°Π½Π΄Π°Β β ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠΌΠ΅Π½Ρ.
βοΈ Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΠ»Π°ΡΡ, ΠΠ±ΡΠ΅ΠΊΡ, ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ Go, ΡΡΠΎ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π’ΠΈΠΏ, ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π’ΠΈΠΏΠ° ΠΈ ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π’Π°ΠΊΠΆΠ΅ Π² Go Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅.
πΠ ΠΏΠ°ΡΡΠ΅ΡΠ½Π΅ ΠΠΎΠΌΠ°Π½Π΄Π° ΠΌΡ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ:
β’ Command β Π·Π°ΠΏΡΠΎΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
β’ Receiver β ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ;
β’ Invoker β ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠ°
πΠΠ°ΡΡΠ΅ΡΠ½ ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ½ΠΈΡΠΈΠΈΡΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡ, ΡΡΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
πΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
1. ΠΠ°Π·ΠΎΠ²ΡΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
2. ΠΠ»Π°ΡΡ ConcreteCommand, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
3. ΠΠ»Π°ΡΡ Invoker, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡΠ°, Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΏΡΠΎΠ²ΠΎΡΠΈΡΡΡΡΠΈΠΉ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
4. ΠΠ»Π°ΡΡ Receiver, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ
πInvoker ΡΠΌΠ΅Π΅Ρ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΠΊ Invoker, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°.
πConcreteCommand ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ Receiver, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Receiver ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Actions), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ ΠΈΠ· ConcreteCommand.
πΠΠΎΠΌΠ°Π½Π΄Π°Β β ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠΌΠ΅Π½Ρ.
πΠ ΠΏΠ°ΡΡΠ΅ΡΠ½Π΅ ΠΠΎΠΌΠ°Π½Π΄Π° ΠΌΡ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ:
β’ Command β Π·Π°ΠΏΡΠΎΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
β’ Receiver β ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ;
β’ Invoker β ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠ°
πΠΠ°ΡΡΠ΅ΡΠ½ ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ½ΠΈΡΠΈΠΈΡΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡ, ΡΡΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
πΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
1. ΠΠ°Π·ΠΎΠ²ΡΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
2. ΠΠ»Π°ΡΡ ConcreteCommand, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
3. ΠΠ»Π°ΡΡ Invoker, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡΠ°, Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΏΡΠΎΠ²ΠΎΡΠΈΡΡΡΡΠΈΠΉ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
4. ΠΠ»Π°ΡΡ Receiver, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ
πInvoker ΡΠΌΠ΅Π΅Ρ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΠΊ Invoker, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°.
πConcreteCommand ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ Receiver, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Receiver ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Actions), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ ΠΈΠ· ConcreteCommand.