Command
Definição
O padrão Command encapsula uma solicitação como um objeto, permitindo que você separe o código que envia um comando do código que executa a ação.
Ele é útil quando você quer registrar ações, desfazê-las, enfileirá-las ou executar comandos em momentos diferentes da criação.
Por que é importante
O Command promove o desacoplamento entre quem emite uma ação e quem executa. Isso torna o sistema mais flexível e facilita a criação de comandos reutilizáveis, reversíveis e agendáveis.
É muito usado em sistemas com botões configuráveis, menus, sistemas de automação ou filas de execução.
Exemplo prático (Python)
Vamos simular um controle remoto onde cada botão executa um comando diferente, mas o controle não sabe como a ação é realizada:
from abc import ABC, abstractmethod
# Comando base
class Comando(ABC):
@abstractmethod
def executar(self):
pass
# Comandos concretos
class LigarLuz(Comando):
def executar(self):
print("Luz ligada")
class DesligarLuz(Comando):
def executar(self):
print("Luz desligada")
# Invocador
class ControleRemoto:
def __init__(self):
self.comandos = {}
def configurar_botao(self, nome, comando: Comando):
self.comandos[nome] = comando
def pressionar(self, nome):
if nome in self.comandos:
self.comandos[nome].executar()
Uso do padrão:
controle = ControleRemoto()
controle.configurar_botao("ligar", LigarLuz())
controle.configurar_botao("desligar", DesligarLuz())
controle.pressionar("ligar")
controle.pressionar("desligar")
Com isso, o controle remoto pode executar ações sem saber os detalhes internos de cada comando. Também seria possível registrar os comandos para desfazer ações no futuro.