例如:文件夹是一个复合对象,文件是一个叶子。
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
变量深入访问每个对象。