Команда (С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
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…