我有一段代码可以解析一些模板文件,当它找到一个占位符时,会将其替换为一个值。类似于:
<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++,但我想这个问题在任何语言中都存在。我想这更关乎算法和OO设计。唯一重要的是必须编译它,即使我想使用任何动态/eval'd代码也不行。
我考虑过实现责任链模式,但似乎并不能很好地改善情况。
更新:我也关注这篇帖子中的评论。我应该关心吗?