Interprete se usa para definir un lenguaje para representar expresiones regulares que representen cadenas a buscar dentro de otras cadenas. Además, en general, para definir un lenguaje que permita interpretar las distintas instancias de una familia de problemas.
Nombre:
Interprete.
También conocido como:
Interpreter.
Propósito:
Dado un lenguaje, define una representación para su gramática junto con un intérprete que usa la representación para interpretar sentencias del lenguaje.
Aplicabilidad:
Este patrón se utiliza generalmente cuando:
· Hay un lenguaje sencillo de interpretar.
· Los problemas recurrentes se puede expresar en ese idioma.
· La eficiencia no es la cuestión principal. Hay un grupo de objetos en un sistema que potencialmente pueden responder para el mismo tipo de mensaje.
Estructura:

Participantes:
· AbstractExpression: Declara las operaciones de interpretación que las especializaciones han de implementar.
· TerminalExpression: Representan a los símbolos terminales.
· NonterminalExpression: Representan a las producciones de la gramática.
· Context: Contiene la información global del proceso de interpretación.
· Client: Construye el árbol sintáctico de una frase del lenguaje e invoca la operación de interpretación.
Consecuencias:
· Es fácil cambiar y ampliar la gramática.
· Resulta fácil implementarla.
· Las gramáticas complejas son difíciles de mantener.
· Añadir nuevos modos de interpretar expresiones.
Patrones relacionados:
· Composite.
· Flyweight.
· Iterator.
· Visitor.
Etiquetas: Behavioral Patterns, Interprete, Patrones de Comportamiento