/// <summary> /// 组合设计模式的基类。 /// </summary> abstract class BaseElement { public abstract void Add(BaseElement e) { } public abstract void Remove(BaseElement e) { } public abstract void Duty() { } } /// <summary> /// 字符 /// </summary> public class CharElement:BaseElement { public override void Add(BaseElement e) { throw new NotImplementedException(); } public override void Remove(BaseElement e) { throw new NotImplementedException(); } public override void Duty() { Console.WriteLine("i am a char"); } } /// <summary> /// 图片 /// </summary> public class GraphicElement:BaseElement { public override void Add(BaseElement e) { throw new NotImplementedException(); } public override void Remove(BaseElement e) { throw new NotImplementedException(); } public override void Duty() { throw new NotImplementedException(); } } /// <summary> /// 段落,一个段落有字符和图片组合而成 /// </summary> public class ParagraphyElement:BaseElement { List<BaseElement> children = new List<BaseElement>(); public override void Add(BaseElement e) { children.Add(e); } public override void Remove(BaseElement e) { children.Remove(e); } public override void Duty() { foreach (var item in children) { item.Duty(); } } }
组合设计模式