2016-10-15坚持学习Day6组合模式

Posted zscmj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016-10-15坚持学习Day6组合模式相关的知识,希望对你有一定的参考价值。

哈哈,今天偷懒了,在晚上只看了一个组合模式。

例子:

树结构,有一些是树节点,一些是叶子节点。

比如,文件夹树结构,一个是文件夹节点,一个是文件节点,虽然都是树的节点,但是具体的业务肯定是区别的。

代码:

abstract class Component
    {
        public abstract void Add(Component c); //增加成员
        public abstract void Remove(Component c); //删除成员
        public abstract Component GetChild(int i); //获取成员
        public abstract void Operation();  //业务方法
    }

    class Leaf : Component
    {
        public override void Add(Component c)
        {
            //异常处理或错误提示 
        }

        public override void Remove(Component c)
        {
            //异常处理或错误提示 
        }

        public override Component GetChild(int i)
        {
            //异常处理或错误提示
            return null;
        }

        public override void Operation()
        {
            //叶子构件具体业务方法的实现
        }
    }

    class Composite : Component
    {
        private List<Component> list = new List<Component>();

        public override void Add(Component c)
        {
            list.Add(c);
        }

        public override void Remove(Component c)
        {
            list.Remove(c);
        }

        public override Component GetChild(int i)
        {
            return (Component)list[i];
        }

        public override void Operation()
        {
            //容器构件具体业务方法的实现,将递归调用成员构件的业务方法
            foreach (Object obj in list)
            {
                ((Component)obj).Operation();
            }
        }
    }

 

以上是关于2016-10-15坚持学习Day6组合模式的主要内容,如果未能解决你的问题,请参考以下文章

DAY6-Python学习笔记

小白艰苦学习之路(记录学习历程——Java篇)Day6

小白艰苦学习之路(记录学习历程——Java篇)Day6

小白艰苦学习之路(记录学习历程——Java篇)Day6

小白艰苦学习之路(记录学习历程——Java篇)Day6

Day6 Java学习第六天---;方法