Middle+
O que é o padrão 'Comando' (Command)?
sobes.tech IA
Resposta da IA
O padrão "Comando" é um padrão comportamental de design que transforma uma solicitação em um objeto independente que contém todas as informações sobre essa solicitação. Essa transformação permite:
- Parametrizar objetos clientes com diferentes solicitações
- Colocar solicitações em fila ou registrá-las
- Suportar desfazer operações
Principais participantes do padrão:
- Comando (Command): Declara a interface para executar a operação.
- Comando concreto (Concrete Command): Implementa a interface
Commande define a ligação entre o receptor e a ação. Executa a ação chamando os métodos do receptor. - Receptor (Receiver): A classe que sabe como realizar as ações necessárias.
- Invocador (Invoker): O objeto que solicita a execução do comando. Não sabe nada sobre o comando concreto ou o receptor.
# Interface de comando
class Command:
def execute(self):
pass
# Comando concreto
class ConcreteCommand(Command):
def __init__(self, receiver, argument):
self._receiver = receiver # Receptor
self._argument = argument
def execute(self):
self._receiver.action(self._argument)
# Receptor
class Receiver:
def action(self, arg):
print(f"Ação sendo executada com o argumento: {arg}")
# Invocador
class Invoker:
def set_command(self, command):
self._command = command
def execute_command(self):
self._command.execute()
# Exemplo de uso
receiver = Receiver()
command = ConcreteCommand(receiver, "Olá, Comando!")
invoker = Invoker()
invoker.set_command(command)
invoker.execute_command()
O padrão "Comando" é útil quando:
- Execução diferida de operações: Capacidade de executar comandos no futuro.
- Filas de comandos: Construção de uma sequência de comandos para execução.
- Desfazer operações (undo): Salvando o estado dos comandos para revertê-los.
- Registro de operações: Gravando o histórico de comandos executados.