Что такое паттерн Интерпретатор (Interpreter)?
Паттерн Интерпретатор используется для создания парсеров и работы с текстовыми данными, которые описывают операции или выражения.
Короткий ответ
Паттерн Интерпретатор определяет грамматику языка и способ интерпретации выражений, что позволяет добавлять поддержку нового языка или синтаксиса в приложение.
Длинный ответ
Интерпретатор применим, когда необходимо анализировать и выполнять команды или выражения, записанные в текстовом формате. Этот паттерн подходит для создания простых языков, выражений или сложных фильтров.
Пример из реальной жизни:
Калькулятор, который интерпретирует математические выражения, записанные пользователем (например, "5 + 3").
Реализация в Python:
class Expression:
def interpret(self, context):
pass
class Number(Expression):
def __init__(self, number):
self.number = number
def interpret(self, context):
return self.number
class Add(Expression):
def __init__(self, left, right):
self.left = left
self.right = right
def interpret(self, context):
return self.left.interpret(context) + self.right.interpret(context)
class Subtract(Expression):
def __init__(self, left, right):
self.left = left
self.right = right
def interpret(self, context):
return self.left.interpret(context) - self.right.interpret(context)
# Использование
context = {}
expression = Add(Number(5), Subtract(Number(10), Number(3)))
print(expression.interpret(context)) # 5 + (10 - 3) = 12
Когда использовать:
- Для парсинга и выполнения текстовых данных.
- Для создания новых языков или DSL (Domain Specific Language).