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

本文介绍了组合模式的概念及其在行为树中的应用。通过抽象节点、叶子节点和枝干节点的定义,展示了如何利用组合模式构建树形结构,以实现对单个对象和组合对象的一致性操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

这里写图片描述

代码例子如下:
抽象节点
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);
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VniciGino

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值