您的位置:首页 > 其它

设计模式阅读备忘笔记-组合模式

2017-10-24 09:58 393 查看

设计模式阅读备忘笔记-组合模式

组合模式

将对象组合合成树形结构以标识‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

最近在研究行为树,突然想起来组合模式,就此记录回顾一下。



代码例子如下:

抽象节点

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);
}
}


像行为树,便是分出并行,选择,之类的很多种节点,在依赖节点具体实现行为类,具体行为类一般就是叶子节点。这么看来,行为树也就简单了许多!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式