zoukankan      html  css  js  c++  java
  • 学习笔录——大话设计模式——组合模式

    学习笔录——设计模式

    组合模式

    组合模式模式

    简介

    将对象组合成树形结构以表示'部分_整体'的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性

    代码示例

    
        public abstract class ComponentBasae
        {
            public abstract void Add(ComponentBasae component);
            public abstract void Remove(ComponentBasae component);
    
            public abstract void Display(int depth);
        }
    
        /// <summary>
        /// 枝节点
        /// </summary>
        public class Composite : ComponentBasae
        {
            private List<ComponentBasae> children = new List<ComponentBasae>();
    
            public override void Add(ComponentBasae component)
            {
                this.children.Add(component);
            }
    
            public override void Remove(ComponentBasae component)
            {
                this.children.Remove(component);
            }
    
            public override void Display(int depth)
            {
                System.Console.WriteLine($"{depth}");
    
                this.children.ForEach(item=>
                {
                    item.Display(depth);
                });
            }
        }
    
        /// <summary>
        /// 叶节点
        /// </summary>
        public class Leaf : ComponentBasae
        {
            public override void Add(ComponentBasae component)
            {
                System.Console.WriteLine("叶不能添加叶");
            }
    
            public override void Remove(ComponentBasae component)
            {
                System.Console.WriteLine("不能从叶删除");
            }
    
            public override void Display(int depth)
            {
                System.Console.WriteLine($"{depth}");
            }
        }
    
        static void Main(string[] args)
        {
            Composite root = new Composite();
            root.Add(new Leaf());
    
            Composite root1 = new Composite();
            root1.Add(new Leaf());
            root.Add(root1);
    
            root.Display(1);
    
        }
    
    
  • 相关阅读:
    Linux GNOME桌面使用技巧大全
    联想旭日 C465A 开机白屏
    基础知识:编程的工作机制
    JavaCC 学习笔记
    笨办法学R编程(1)
    一些学习方法总结
    使用变量表示字、数字和值
    栈溢出2017doubly_dangerous
    栈溢出warmup_csaw_2016
    基础学习ret2text
  • 原文地址:https://www.cnblogs.com/caiyangcc/p/13276560.html
Copyright © 2011-2022 走看看