У меня есть код, который анализирует некоторые файлы шаблонов и, когда он находит заполнитель, заменяет его значением. Что-то вроде:
<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) различных заполнителей.
Мой код - C ++, но я думаю, что эта проблема существует с любым языком. Я думаю, это больше об алгоритмах и дизайне ОО. Единственная важная вещь - это то, что это должно быть скомпилировано, даже если бы я хотел, у меня не могло быть никакого динамического / eval'd-кода.
Я думаю о реализации шаблона Chain of Responsibility, но не похоже, что это значительно улучшит ситуацию.
ОБНОВЛЕНИЕ: и я также обеспокоен этим комментарием в другой теме. Должен ли я заботиться об этом?