首页 > 代码库 > 【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】【组合模式】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。