Sobes.tech
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 Command e 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.