content: // Interface da expressão
  interface Expressao {
      int interpretar();
  }
  
  // Expressão terminal: número
  class Numero implements Expressao {
      private int valor;
  
      public Numero(int valor) {
          this.valor = valor;
      }
  
      public int interpretar() {
          return valor;
      }
  }
  
  // Expressão não-terminal: adição
  class Soma implements Expressao {
      private Expressao esquerda, direita;
  
      public Soma(Expressao esquerda, Expressao direita) {
          this.esquerda = esquerda;
          this.direita = direita;
      }
  
      public int interpretar() {
          return esquerda.interpretar() + direita.interpretar();
      }
  }
  
  // Expressão não-terminal: subtração
  class Subtracao implements Expressao {
      private Expressao esquerda, direita;
  
      public Subtracao(Expressao esquerda, Expressao direita) {
          this.esquerda = esquerda;
          this.direita = direita;
      }
  
      public int interpretar() {
          return esquerda.interpretar() - direita.interpretar();
      }
  }
  
  // Teste do padrão Interpreter
  public class Main {
      public static void main(String[] args) {
          Expressao expressao = new Soma(new Numero(5), new Subtracao(new Numero(10), new Numero(3)));
          System.out.println("Resultado: " + expressao.interpretar()); // 5 + (10 - 3) = 12
      }
  }
  