Mega Code Archive

 
Categories / C# Tutorial / Design Patterns
 

Factory Method Patterns

using System; using System.Collections;   public abstract class Section   {     public abstract void SomeSection();   }   public class TitleSection: Section   {          public override void SomeSection()     {       Console.WriteLine("title.");     }                public TitleSection(){;}        }   public class HeaderSection: Section   {     public override void SomeSection()     {       Console.WriteLine("header.");     }     public HeaderSection(){;}   }   public class FooterSection: Section   {         public override void SomeSection()         {             Console.WriteLine("footer.");         }     public FooterSection(){;}   }   public class MenuSection: Section   {     public override void SomeSection()     {       Console.WriteLine("menu.");         }                  public MenuSection(){;}   }   public class CatalogPage: Page   {     public override void AddSection(){       this.pageCompositor.Clear();       this.pageCompositor.Add(new TitleSection());       this.pageCompositor.Add(new FooterSection());     }     public override void DisplayPage(){       Console.WriteLine("Catalog page contains:");       foreach(Section c in this.pageCompositor)         c.SomeSection();     }     public CatalogPage()     {       this.AddSection();     }   }   public class ManualPage: Page   {     public override void AddSection()     {       this.pageCompositor.Clear();       this.pageCompositor.Add(new MenuSection());       this.pageCompositor.Add(new FooterSection());       this.pageCompositor.Add(new HeaderSection());     }     public override void DisplayPage()     {       Console.WriteLine("Manual page contains:");         foreach(Section c in this.pageCompositor)         c.SomeSection();       Console.WriteLine();     }     public ManualPage(){;}   }   public abstract class Page   {     protected ArrayList pageCompositor = new ArrayList();     public abstract void AddSection();     public abstract void DisplayPage();   }     class Client   {     static void Main(string[] args)     {       Page p = new  CatalogPage();       p.AddSection();       p.DisplayPage();          p = new ManualPage();       p.AddSection();       p.DisplayPage();            }   }