У меня есть код, который анализирует некоторые файлы шаблонов, и когда он находит местозаполнитель, он заменяет его значением. Что-то вроде:
<html>
<head>
<title>%title%</title>
</head>
<body bgcolor="%color%">
...etc.
В коде парсер находит их, вызывает эту функцию:
string getContent(const string& name)
{
if (name == "title")
return page->getTitle();
else if (name == "color")
return getBodyColor();
...etc.
}
а затем заменит исходный заполнитель на возвращаемое значение.
В реальном случае это не фиктивная веб-страница, и есть много (50+) разных заполнителей, которые могут произойти.
Мой код - С++, но я предполагаю, что эта проблема существует на любом языке. Думаю, это больше об алгоритмах и дизайне OO. Важно только то, что это должно быть скомпилировано, даже если бы я хотел, чтобы у меня не было никакого динамического /eval 'd кода.
Я, однако, о реализации шаблона Chain of Responsibility, но, похоже, он не улучшит ситуацию.
UPDATE: и я также обеспокоен этим комментарием в другом потоке. Должен ли я заботиться об этом?