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);
    
        }
    
    
  • 相关阅读:
    js解码
    node.js关于传送数据的二三事
    node下新建工程
    mysql配置
    mongodb配置及简单示例
    vue使用watch 观察路由变化,重新获取内容
    vue 封装方法
    ES6,import时如何正确使用花括号'{ }'
    css字体图标的制作
    vue实现淘宝商品详情页属性选择功能
  • 原文地址:https://www.cnblogs.com/caiyangcc/p/13276560.html
Copyright © 2011-2022 走看看