c# 组合模式_C#教程-查字典教程网
c# 组合模式
c# 组合模式
发布时间:2016-12-28 来源:查字典编辑
摘要:结构图:抽象对象:复制代码代码如下:abstractclassComponent{protectedstringname;publicCom...

结构图:

抽象对象:

复制代码 代码如下:

abstract class Component

{

protected string name;

public Component(string name)

{

this.name = name;

}

public abstract void Add(Component c);

public abstract void Remove(Component c);

public abstract void Display(int depth);

}

无子节点的:

复制代码 代码如下:

class Leaf : Component

{

public Leaf(string name)

: base(name)

{ }

public override void Add(Component c)

{

//throw new NotImplementedException();

Console.WriteLine("Cannot add to a Leaf");

}

public override void Remove(Component c)

{

//throw new NotImplementedException();

Console.WriteLine("Cannot remove to a Leaf");

}

public override void Display(int depth)

{

//throw new NotImplementedException();

Console.WriteLine(new string('-', depth) + name);

}

}

可以有子结点:

复制代码 代码如下:

class Composite : Component

{

private List<Component> children = new List<Component>();

public Composite(string name)

: base(name)

{ }

public override void Add(Component c)

{

//throw new NotImplementedException();

children.Add(c);

}

public override void Remove(Component c)

{

//throw new NotImplementedException();

children.Remove(c);

}

public override void Display(int depth)

{

//throw new NotImplementedException();

Console.WriteLine(new string('-', depth) + name);

foreach (Component component in children)

{

component.Display(depth + 2);

}

}

}

主函数调用:

复制代码 代码如下:

class Program

{

static void Main(string[] args)

{

Composite root = new Composite("root");

root.Add(new Leaf("Leaf A"));

root.Add(new Leaf("Leaf B"));

Composite comp = new Composite("Composite X");

comp.Add(new Leaf("Leaf XA"));

comp.Add(new Leaf("Leaf XB"));

root.Add(comp);

Composite comp2 = new Composite("Composite X");

comp2.Add(new Leaf("Leaf XYA"));

comp2.Add(new Leaf("Leaf XYB"));

comp.Add(comp2);

root.Display(1);

Console.ReadKey();

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类