首页 > 代码库 > 【2016-10-15】【坚持学习】【Day6】【组合模式】

【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】【组合模式】