content: // Interface do comando que todos os comandos concretos implementarão
  interface Comando {
      void executar(); // método comum para todos os comandos
  }
  
  // Receptor que realiza as ações reais (ligar/desligar a luz)
  class Luz {
      public void ligar() {
          System.out.println("Luz ligada.");
      }
  
      public void desligar() {
          System.out.println("Luz desligada.");
      }
  }
  
  // Comando concreto para ligar a luz
  class ComandoLigarLuz implements Comando {
      private Luz luz;
  
      public ComandoLigarLuz(Luz luz) {
          this.luz = luz;
      }
  
      public void executar() {
          luz.ligar(); // delega a ação ao receptor
      }
  }
  
  // Comando concreto para desligar a luz
  class ComandoDesligarLuz implements Comando {
      private Luz luz;
  
      public ComandoDesligarLuz(Luz luz) {
          this.luz = luz;
      }
  
      public void executar() {
          luz.desligar(); // delega a ação ao receptor
      }
  }
  
  // Invocador que mantém um comando e executa
  class ControleRemoto {
      private Comando comando;
  
      public void setComando(Comando comando) {
          this.comando = comando; // armazena o comando
      }
  
      public void pressionarBotao() {
          comando.executar(); // executa o comando atual
      }
  }
  
  // Classe principal para teste
  public class Main {
      public static void main(String[] args) {
          Luz luz = new Luz(); // receptor
          Comando ligar = new ComandoLigarLuz(luz);
          Comando desligar = new ComandoDesligarLuz(luz);
  
          ControleRemoto controle = new ControleRemoto();
  
          controle.setComando(ligar);
          controle.pressionarBotao(); // Luz ligada
  
          controle.setComando(desligar);
          controle.pressionarBotao(); // Luz desligada
      }
  }
  