Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estou com dúvida no curso de Design Patterns para Bons Programadores 2, no exercício do capítulo DSLs e o Interpreter.

nao consigo imaginar o que tenho que interpretar dentro de um algoritmo. Até porque o method avalia... tem uma expressão fixa determinada a cada classe Soma() ou Subtracao(), ou seja, não existe uma situação que a própria classe possa decidir por sua avaliação.

1 resposta
solução!

Olá Rogério

O padrão interpreter pode ser utilizado, por exemplo, quando queremos transformar o conteúdo de um arquivo de texto em código. Imagine a situação em que seu sistema precisa ler arquivos de texto para gerar um texto formatado, por exemplo ler o formato Latex para gerar HTML.

No Latex, quando queremos colocar algo sobrescrito utilizamos a^2 para gerar a². Uma das formas de resolver esse problema é isolar a lógica que cria o html formatado dentro de uma classe:

public class Sobrescrito {
   private String base;
   private String sobrescrito;
   public Sobrescrito(String base, String sobrescrito) {
       this.base = base;
       this.sobrescrito = sobrescrito;
   }
   public String formata() {
      // gera o html
   }
}

Nesse caso, o código precisa instanciar as classes de formatação dinamicamente de acordo com o que for lido do arquivo de texto para depois gerar todo o HTML de uma vez.