Я проектирую общую древовидную структуру данных на C #, и мне было интересно, если я перепроектировал ее, имея все эти интерфейсы / классы:
public interface ITreeNode
{
object GenericValue { get; }
IEnumerable<ITreeNode> Children {get;}
}
public interface ITreeNode<T>:ITreeNode
{
T Value { get; }
}
public class TreeNode : ITreeNode
{
protected readonly LinkedList<ITreeNode> _children = new LinkedList<ITreeNode>();
protected object _value;
public object GenericValue
{
get { return _value; }
}
public IEnumerable<ITreeNode> Children
{
get { return _children; }
}
}
public class TreeNode<T> : TreeNode, ITreeNode<T>
{
public T Value
{
get { return (T)base._value; }
}
}
- Не могли бы вы дать совет по улучшению /Упрощения?
- Как бы вы реализовали узел двоичного дерева?Используйте еще 2 интерфейса и еще 2 класса или есть лучший способ?
Для чего нужно: нам нужно хранить несколько деревьев, которые связаны с другими деревьями.Таким образом, лист в одном дереве может быть корнем в другом.Вот почему все эти дженерики и не дженерики