//子樹classComposite:Component{private List<Component> children =newList<Component>();publicComposite(string name):base(name){}publicoverridevoidAdd(Component c){
children.Add(c);}publicoverridevoidDisplay(int depth){
Console.WriteLine(newString('-', depth)+ name);foreach(Component component in children){
component.Display(depth +1);}}publicoverridevoidRemove(Component c){
children.Remove(c);}}
//葉節點classLeaf:Component{publicLeaf(String name):base(name){}publicoverridevoidAdd(Component c){
Console.WriteLine("Cannot add to a leaf");}publicoverridevoidDisplay(int depth){
Console.WriteLine(newString('-', depth)+ name);}publicoverridevoidRemove(Component c){
Console.WriteLine("Cannot remove from a leaf");}}
classProgram{staticvoidMain(string[] args){Composite root =newComposite("Root");Composite A =newComposite("A");Composite B =newComposite("B");Leaf C =newLeaf("C");Leaf D =newLeaf("D");Leaf E =newLeaf("E");Leaf F =newLeaf("F");
root.Add(A);
root.Add(B);
A.Add(C);
A.Add(D);
B.Add(E);
B.Add(F);
root.Display(0);
Console.WriteLine();
B.Remove(F);
root.Display(0);}}