Я создаю компонент графического интерфейса с древовидной моделью данных (например, структура папок в файловой системе). таким образом, компонент графического интерфейса в основном имеет набор деревьев, которые являются просто объектами узла, у которых есть ключ, ссылка на часть компонента графического интерфейса (так что вы можете назначать значения объекту узла, и он, в свою очередь, обновляет графический интерфейс) и коллекция дочерних элементов Node.
одна вещь, которую я хотел бы сделать, это иметь возможность устанавливать «стили», которые применяются к каждому уровню узлов (например, все узлы верхнего уровня выделены жирным шрифтом, все узлы уровня 2 выделены курсивом и т. д.). поэтому я добавил это в объект компонента графического интерфейса. чтобы добавить узлы, вы вызываете AddChild для объекта Node. Я хотел бы применить стиль здесь, так как при добавлении узла я знаю, на каком уровне находится узел.
проблема в том, что информация о стиле находится только в содержащем объекте (объекте графического интерфейса), поэтому узел не знает об этом. Я мог бы добавить «указатель» в каждом узле к объекту графического интерфейса, но это кажется каким-то неправильным... или я мог бы скрыть узлы и дать пользователю возможность добавлять узлы только через объект графического интерфейса, например gui.AddNode(Node new_node, Node parent), что кажется неэлегантным.
есть ли более приятный дизайн для этого, который мне не хватает, или пара способов, которые я упомянул, не так уж плохи?