////// 组合设计模式的基类。 /// abstract class BaseElement { public abstract void Add(BaseElement e) { } public abstract void Remove(BaseElement e) { } public abstract void Duty() { } } ////// 字符 /// 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"); } } ////// 图片 /// 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(); } } ////// 段落,一个段落有字符和图片组合而成 /// public class ParagraphyElement:BaseElement { Listchildren = new List (); 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(); } } }
组合设计模式