Команда (Сommand) — это паттерн, который позволяет разделять операции и выполнять их независимо друг от друга. Благодаря этому команды можно выстраивать в очереди, откладывать или отменять их выполнение.
По сути, паттерн инкапсулирует всю информацию, необходимую для выполнения действия или запуска события. Для этого команда представляет запрос в виде объекта. Например, одна и та же кнопка в программе может выполнять разные функции: сначала включать свет, а затем стереосистему или открывать двери гаража.
Чтобы понять, как работает паттерн Сommand, можно посмотреть на схему ниже, но перед этим объясним некоторые термины:
Особенности паттерна:
Для работы Command взаимодействует большое количество классов и объектов. Поэтому разработчику нужно правильно разрабатывать эти классы.
import abc
class Command(metaclass=abc.ABCMeta):
@abc.abstractmethod
def execute(self):
pass
class LunchCommand(Command):
def __init__(self, lunch):
self.lunch = lunch
def execute(self):
self.lunch.make_lunch()
class DinnerCommand(Command):
def __init__(self, dinner):
self.dinner = dinner
def execute(self):
self.dinner.make_dinner()
class Lunch:
def make_lunch(self):
print("Lunch is being made")
class Dinner:
def make_dinner(self):
print("Dinner is being made")
class MealInvoker:
def __init__(self, command):
self.command = command
def set_command(self, command):
self.command = command
def invoke(self):
self.command.execute()
if __name__ == '__main__':
lunch = Lunch() # receiver
command_lunch = LunchCommand(lunch) # concrete command
dinner = Dinner() # receiver
command_dinner = DinnerCommand(dinner) # concrete command
meal_invoker = MealInvoker(command_lunch); # invoker
meal_invoker.invoke()
meal_invoker.set_command(command_dinner)
meal_invoker.invoke()
Результат:
Lunch is being made Dinner is being made
На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…