设计模式阅读备忘笔记-组合模式
组合模式
将对象组合合成树形结构以标识‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
最近在研究行为树,突然想起来组合模式,就此记录回顾一下。
代码例子如下:
抽象节点
public abstract class AComposite
{
protected string name;
public AComposite (string na)
{
this.name = na;
}
public abstract void Add(AComposite ac);
public abstract void Remove(AComposite ac);
public abstract void Display(int depth);
}
依赖抽象的叶子节点,叶子节点没有子节点
public class Leaf : AComposite
{
public Leaf(string na) : base(na)
{
}
public override void Add(AComposite ac)
{
}
public override void Display(int depth)
{
//显式名称和级别
Debug.Log(new string('-', depth) + name);
}
public override void Remove(AComposite ac)
{
}
}
枝干节点,拥有子节点
class Composite : AComposite
{
public Composite(string na) : base(na) { }
//
public List<AComposite> children = new List<AComposite>();
public override void Add(AComposite ac)
{
children.Add(ac);
}
public override void Display(int depth)
{
//显式名称和级别,并对下级遍历
Debug.Log(new string('-', depth) + name);
foreach (var item in children)
{
item.Display(depth +1);
}
}
public override void Remove(AComposite ac)
{
children.Remove(ac);
}
}