Interpreter — выполнение правил и DSL через встроенные мини-языки
Interpreter позволяет описывать логику в виде небольшого предметного языка и выполнять её через интерпретатор. Паттерн подходит для систем правил, формул, фильтров, поисковых запросов, сценариев и бизнес-DSL.
Архитектор использует Interpreter там, где нужно предоставить гибкость без переписывания кода — правила меняются конфигурацией, а не разработкой.
Паттерн востребован в BPM, биллинге, расчётах тарифов, антифроде, проверке ограничений, фильтрации данных, а также при проектировании DSL для бизнес-команд.
Interpreter — один из самых недооценённых, но крайне важных паттернов, особенно в архитектуре корпоративных систем, где требуется гибко менять правила, формулы и условия без обновления кода. Он позволяет описывать логику в виде мини-языка, выражений или скриптов и выполнять её через интерпретатор, что даёт архитектуре колоссальную гибкость и снижает стоимость изменений.
Зачем архитектору нужен Interpreter
В реальных системах бизнес очень часто хочет менять:
-
тарифы,
-
правила выдачи кредитов,
-
правила маршрутизации,
-
правила безопасности,
-
условия фильтрации,
-
конфигурацию процессов,
-
формулы расчётов.
Если всё это хардкодить — система станет неподдерживаемой.
Interpreter позволяет вынести изменяемую логику «наружу»:
-
в конфиги,
-
в таблицы БД,
-
в XML/YAML/JSON правила,
-
в внутренний DSL («домашний язык» бизнеса),
-
в редактор правил.
Архитектор создаёт интерпретатор, который выполняет эти правила без перекомпиляции системы.
Типичные применения Interpreter
1. Системы бизнес-правил (rule engines)
Например:
-
«если сумма > X и клиент из сегмента Y — применить правило Z»
-
«если товар в категории A — скидка 10%»
Это основа антифрода, скоринга, кредитного риск-менеджмента.
2. Системы расчётов
Биллинг, тарифы, страхование, налоги.
Часто правила описываются как формулы или сценарии.
3. DSL для бизнес-пользователей
Архитектор проектирует мини-язык, например: