Интерпретатор (Interpreter)

Метафора

 

Примером из жизни может служить способ сокращения набором слов определенных действий, например, говоря официанту в сабвее: «Серый, курица терияки, со всеми овощами, 1000 островов и чесночный», Вы тем самым даёте ему на интерпретацию некоторую команду, а он уже пытается её преобразовать в последовательность выполнения команд: достать и разрезать серый хлеб, положить куриную начинку со всеми овощами и залить это все двумя соусами, подать Вам.

 

Назначение

 

Паттерн Interpreter – позволяет сформировать объектно-ориентированное представление грамматики для заданного языка, а также описывает правила создания механизма интерпретации (толкования) предложений этого языка.

 

Диаграмма

 

Интерпретатор

Интерпретатор

 

На диаграмме определено некое абстрактное выражение, которое содержит один единственный метод interpret, наследники этого выражения делятся на две категории, терминальные выражения (те что не включают в себя другие) и не терминальные (внутри которых есть некоторое кол-во других выражений). Во время интерпретации обрабатывается некоторый контекст, используемый клиентом.

 

Пример

 

Согласно представленной сверху BNF нотации наш объект SUB может интерпретировать свой состав в понятное человеку выражение (context).

Часто шаблон используется для построения DSL (предметно-ориентированных языков), пример на ABAP можно найти по ссылке.