组合模式
来源:互联网 发布:淘宝注册资金要多少钱 编辑:程序博客网 时间:2024/05/22 06:59
Component.cs
abstract class Component{ protected string name; public Component(String name) { this.name = name; } public abstract void Add(Component c); public abstract void Remove(Component c); public abstract void Display(int depth);}
Composite.cs
class Composite:Component{ private List<Component> children = new List<Component>(); public Composite(String name) : base(name) { } public override void Add(Component c) { children.Add(c); } public override void Remove(Component c) { children.Remove(c); } public override void Display(int depth) { Console.WriteLine(new String('-', depth) + name); foreach(Component component in children) { component.Display(depth + 2); } }}
Leaf.cs
class Leaf:Component{ public Leaf(String name) : base(name) { } public override void Add(Component c) { Console.WriteLine("Cannot add to a leaf"); } public override void Remove(Component c) { Console.WriteLine("Cannot remove on a leaf"); } public override void Display(int depth) { Console.WriteLine(new string('-', depth) + name); }}
Program.cs
class Program{ static void Main(string[] args) { Composite root = new Composite("root"); root.Add(new Leaf("Leaf A")); root.Add(new Leaf("Leaf B")); Composite comp = new Composite("Composite X"); comp.Add(new Leaf("Leaf XA")); comp.Add(new Leaf("Leaf XB")); root.Add(comp); Composite comp2 = new Composite("Composite XY"); comp2.Add(new Leaf("Leaf XYA")); comp2.Add(new Leaf("Leaf XYB")); root.Add(comp2); root.Add(new Leaf("Leaf C")); Leaf leaf = new Leaf("Leaf D"); root.Add(leaf); root.Remove(leaf); root.Display(1); Console.Read(); }}
运行结果:
0 0
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 前端模块系统
- ubuntu 一天一条小命令
- SQL日求日期
- android 自定义dialog的简单实现
- POJ 3667 Hotel 区间合并+线段树 *
- 组合模式
- 深入理解Android(一):Gradle详解
- 书那么多,从第一页翻到最后肯定行不通了
- leetcode:数学:Perfect Squares(279)
- 【SQLSERVER】执行字符串
- 基于hadoop生态圈的数据仓库实践 —— OLAP与数据可视化(五)
- mysql建索引原则及索引区别
- 三种常见设置字体的单位比较
- HTML学习笔记