Команда (Транзакция, Action)
Это поведенческий паттерн проектирования, который позволяет разделить например интерфейс и бизнес-логику, используя класс, который делегирует бизнес-логике действие, запрашиваемое отправителем команды. Паттерн Команда по сути устанавливает одностороннюю связь от заказчика к исполнителю.
Паттерн Команда (как впрочем и другие паттерны проектирования отношений между отправителем и получателем запросов) ведет к появлению дополнительных классов и усложнению кода.
Реализация паттерна проектирования Команда на python
# coding: utf-8 class Light(object): def turn_on(self): print 'Включить свет' def turn_off(self): print 'Выключить свет' class CommandBase(object): def execute(self): raise NotImplementedError() class LightCommandBase(CommandBase): def __init__(self, light): self.light = light class TurnOnLightCommand(LightCommandBase): def execute(self): self.light.turn_on() class TurnOffLightCommand(LightCommandBase): def execute(self): self.light.turn_off() class Switch(object): def __init__(self, on_cmd, off_cmd): self.on_cmd = on_cmd self.off_cmd = off_cmd def on(self): self.on_cmd.execute() def off(self): self.off_cmd.execute() light = Light() switch = Switch(on_cmd=TurnOnLightCommand(light), off_cmd=TurnOffLightCommand(light)) switch.on() # Включить свет switch.off() # Выключить свет