Команда (С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
Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…