Mam kod, który analizuje niektóre pliki szablonów, a gdy znajdzie symbol zastępczy, zastępuje go wartością. Coś jak:Zastąp symbol gigantycznego przełącznika czym?
<html>
<head>
<title>%title%</title>
</head>
<body bgcolor="%color%">
...etc.
w kodzie, parser znajdzie tych, nazywa tę funkcję:
string getContent(const string& name)
{
if (name == "title")
return page->getTitle();
else if (name == "color")
return getBodyColor();
...etc.
}
a następnie zastępuje oryginalny zastępczy z zwracanej wartości.
W rzeczywistości nie jest to fikcyjna strona internetowa i istnieje wiele (50+) różnych symboli zastępczych, które mogą wystąpić.
Mój kod to C++, ale myślę, że ten problem istnieje w dowolnym języku. Chodzi raczej o algorytmy i projektowanie OO. Ważną rzeczą jest to, że trzeba to skompilować, nawet gdybym chciał, nie mogłem mieć żadnego kodu dynamicznego/eval'd.
Chodzi mi o wdrożenie schematu Łańcuch Odpowiedzialności, ale wygląda na to, że nie poprawiłoby to sytuacji.
AKTUALIZACJA: i martwię się również o this comment w innym wątku. Czy powinienem się tym przejmować?
+1 Dla wyjaśnienia, w C++ są to nazywane std :: map. – Eclipse
Szczególnie dobry, jeśli słownik może korzystać z wyszukiwania O (1), takiego jak mieszanie. –
Świetna odpowiedź. Troszkę po chudej stronie, ale zdecydowanie dobra droga. :) –