У меня есть код (C#), который строит дерево полиморфных объектов. В зависимости от типа объект может иметь 0-7 детей. Сейчас конструкторы объектов, ничего не делать, и я построить все дерево объектов с помощью рекурсивной вспомогательной функции:Мне нужен шаблон для построения деревьев объектов
// pseudocode
void BuildTree(Node root) {
if(root is A) {
root.a_data = ...
root.a_child = GenerateNewNode(some_constraints);
BuildTree(root.a_child)
} else if(root is B) {
// same stuff, for B. Note B may have different chldren, etc
}
}
Это все кажется действительно безвкусным, поэтому в основном я ищу шаблон, который может помочь мне здесь , Функция BuildTree, похоже, является какой-то политикой, и я хотел бы иметь возможность использовать различные политики в будущем.
О, еще один усложняющий фактор. В BuildTree есть вещи, которые обусловлены более ранними вещами, которые сделал BuildTree. Например, если я когда-либо создавал B, то мне нужно сделать XYZ для C узлов. Или, если я в настоящее время генерирую детей из A, тогда не создавайте D.
Вы пробовали шаблон шаблона? HAHAHAHHA. Сожалею. –