如何找出某个叶节点在复合设计模式中的深度



例如:文件夹是一个复合对象,文件是一个叶子。

Folder 1
-- Folder 2
--- File 1

在这里,我知道文件1在文件夹1的组合中有三个层次。我可以用什么方法来跟踪文件1的深度?

映像此类(Component是只定义方法的父类(

class Leaf : Component
{
public int deep;
public override void Operation()
{
console.WriteLine("Leaf");
}
}

对于复合材料:

class Composite : Component
{
public int deep;
protected List<Component> _children = new List<Component>();

public override void Add(Component component)
{
this._children.Add(component);
}
public override void Operation()
{
foreach (Component component in this._children)
{
component.Operation();
component.deep = component.deep+1;
}
}
}

其主要思想是component.deep = component.deep+1;并且可以使用deep变量深入访问每个对象。

最新更新