• 组合模式


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace Composite
    {
        public abstract class Component
        {
            public abstract void Show();
            //添加部件
            public abstract void Add(Component component);
            //删除部件
            public abstract void Remove(Component component);
            public string Name { getset; }
        }
        public class Leaf : Component 
        {
            public override void Add(Component component) 
            {
                throw new NotImplementedException(); 
            }
            public override void Remove(Component component)
            {
                throw new NotImplementedException();
            }
            public override void Show() 
            {
                Console.WriteLine(Name);
            }
        }
        public class Node : Component 
        {
            private List<Component> myChildren = new List<Component>();
            public override void Add(Component component)
            {
                myChildren.Add(component);
            }
            public override void Remove(Component component)
            {
                myChildren.Remove(component);
            }
            public override void Show() 
            {
                Console.WriteLine(Name);
                foreach (Component child in myChildren) 
                {
                    child.Show();
                }
            }
        }
    }
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace Composite
    {
        class Program
        {
            static void Main(string[] args)
            {
                //构造根节点
                Node rootComponent = new Node();
                rootComponent.Name = "根节点";
                //添加两个叶子几点,也就是子部件
                Leaf l = new Leaf();
                l.Name = "叶子节点一";
                Leaf l1 = new Leaf();
                l1.Name = "叶子节点二";
                rootComponent.Add(l);
                rootComponent.Add(l1);
                rootComponent.Show();
                Console.ReadLine();
            }
        }
    }




  • 相关阅读:
    鼠标放大镜案例代码
    鼠标点击跟随,鼠标点击哪里,图片跟随到哪里;
    筋斗云效果(云朵在导航栏内随着鼠标移动)
    HDU5003:Osu!(签到题)HDU5038:(签到题,题意很坑)
    SDUT3146:Integer division 2(整数划分区间dp)
    SDUT3145:Integer division 1(换零钱背包)
    SDUT3143:Combinatorial mathematics(组合数学)
    SDUT3141:Count(哈希)好题
    SDUT1574:组合数的计算
    SDUT1607:Number Sequence(矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/zyizyizyi/p/3173121.html
Copyright © 2020-2023  润新知