资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Composite模式(组合模式)-创新互联

模式简介

组合模式多用于树形菜单,文件、文件夹之类的管理,把一组类似的对象看作一个对象,例如文件夹可以包含文件夹和文件,但是把文件夹看作一个对象。

为蒙城等地区用户提供了全套网页设计制作服务,及蒙城网站建设行业解决方案。主营业务为网站建设、成都网站建设、蒙城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!模式UML图

代码示例(C#)
//叶子节点,继承Node类
    class LeafNode : Node
    {
        public LeafNode(string p_name) : base(p_name) { }
    }

    //分支节点,继承Node类
    class BranchNode : Node
    {
        public ListchildNodes = new List();

        public BranchNode(string p_name) : base(p_name) { }

        public void Add(Node p_node)
        {
            childNodes.Add(p_node);
        }
        public void Remove(Node p_node)
        {
            childNodes.Remove(p_node);
        }
    }

    //节点抽象类,所有节点继承该类
    public abstract class Node
    {
        public string name;
        public string content;

        public Node(string p_name)
        {
            name = p_name;
        }
    }

    //测试代码
    public void Test()
    {
        BranchNode root = new BranchNode("Root");
        BranchNode node1 = new BranchNode("Node1");
        BranchNode node2 = new BranchNode("Node2");
        BranchNode node3 = new BranchNode("Node3");
        LeafNode node4 = new LeafNode("Node4");
        LeafNode node5 = new LeafNode("Node5");
        LeafNode node6 = new LeafNode("Node6");
        root.Add(node1);
        root.Add(node2);
        node1.Add(node4);
        node2.Add(node3);
        node3.Add(node5);
        node3.Add(node6);

        Draw(root, 1);
    }

    private void Draw(Node p_node, int p_depth)
    {
        string v_str = "";
        for (int i = 0; i< p_depth; i++) v_str += "|";
        Console.WriteLine(v_str + p_node.name);
        if (p_node is BranchNode)
        {
            foreach (Node n in ((BranchNode)p_node).childNodes)
            {
                Draw(n, p_depth + 1);
            }
        }
    }
代码解说

我们这里体现在BranchNode类中的childNodes属性,组合模式在于把拥有子节点的BranchNode和没有子节点的LeafNode都看作一个单独的对象,都是Node。LeafNode就类似于文件,而BranchNode就类似于文件夹,文件中不能再包含文件或文件夹,但是文件夹下可以包含文件夹和文件。

如果这篇文章对你有帮助,请给作者点个赞吧!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:Composite模式(组合模式)-创新互联
转载源于:http://cdkjz.cn/article/pjohi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220