#c# #design-patterns
#c# #шаблоны проектирования
Вопрос:
У меня есть объект, у которого могут быть родители и дочерние элементы одного и того же типа объекта. Существует ли стандартизированный способ реализации этого шаблона?
Что-то вроде:
public class Nested
{
public string Name {get; set;}
public List<Nested> Parents {get {TODO}}
public List<Nested> Children {get {TODO}}
}
Комментарии:
1. Проверьте, помогает ли эта ссылка forums.silverlight.net/forums/p/231184/566463.aspx . Обсуждение аналогичной проблемы, связанной с базой данных dbforums.com/microsoft-sql-server /… и forums.asp.net/t/1259184.aspx/1
Ответ №1:
Взгляните на составной шаблон здесь
Ответ №2:
С точки зрения памяти, похоже, что любому экземпляру вашего класса потребуется рекурсивно отфильтровать все, чтобы выяснить, каковы взаимосвязи. Это обременительно.
Я бы рекомендовал просто присвоить вашему классу свойство, подобное этому (или что-то более сложное, в зависимости от того, чего вы хотите достичь):
public Nested parent;
Это превратило бы его в связанный список. Вы можете отдельно создать метод вне класса, который управляет поиском родителей на основе ограниченного набора параметров (например, FindParentsOfNestedToCertainGeneration(int numOfGenerations, вложенный дочерний элемент) — Это просто перейдет к дочернему элементу и поднимется по цепочке родителей в свойстве «parent»).
Комментарии:
1. Карл Бенсон, я думаю, что требование заключается в том, чтобы у одного узла могло быть несколько родительских элементов. Например, организация, в которой у сотрудника может быть более одного руководителя.