Mega Code Archive

 
Categories / C# Tutorial / Design Patterns
 

Abstract Factory

using System;   public class AComputer: Computer   {     public override void ComputerBrand()     {       Console.WriteLine ("A Computer.");     }     public AComputer(){;}   }   public class AComputerDesk: ComputerDesk   {     public override void ComputerDeskBrand()     {       Console.WriteLine("A Computer cap.");     }     public AComputerDesk(){;}   }   public class AComputerFactory: ComputerFactory   {     public override Computer BuildComputer()     {       Computer rad = new AComputer();       rad.ComputerBrand();       return rad;     }     public override ComputerDesk BuildComputerDesk()     {       ComputerDesk cap = new AComputerDesk();       cap.ComputerDeskBrand();       return cap;     }              public AComputerFactory(){;}   }   public class BComputer:Computer   {     public override void ComputerBrand()     {       Console.WriteLine ("B Computer.");     }          public BComputer(){;}   }   public class BComputerDesk: ComputerDesk   {            public override void ComputerDeskBrand()     {       Console.WriteLine("B Computer cap.");     }     public BComputerDesk(){;}   }   public class BComputerFactory: ComputerFactory   {          public override Computer BuildComputer()     {       Computer rad = new  BComputer();       rad.ComputerBrand();       return rad;     }     public override ComputerDesk BuildComputerDesk()     {       ComputerDesk cap = new BComputerDesk();       cap.ComputerDeskBrand();       return cap;     }          public BComputerFactory(){;}   }   public class CComputer: Computer   {          public override void ComputerBrand()     {       Console.WriteLine ("C Computer.");     }        public CComputer() {;}   }   public class CComputerDesk: ComputerDesk   {          public override void ComputerDeskBrand()     {       Console.WriteLine("C Computer cap.");     }          public CComputerDesk(){;}   }     public class CComputerFactory : ComputerFactory   {          public override Computer BuildComputer()     {       Computer rad = new  CComputer();       rad.ComputerBrand();       return rad;     }     public override ComputerDesk BuildComputerDesk()     {       ComputerDesk cap = new CComputerDesk();       cap.ComputerDeskBrand();       return cap;     }          public CComputerFactory(){;}   }   public abstract class Computer   {     public abstract void ComputerBrand();   }   public abstract class ComputerDesk   {     public abstract void ComputerDeskBrand();   }   public abstract class ComputerFactory   {         public abstract Computer BuildComputer();     public abstract ComputerDesk BuildComputerDesk();   }   public class WorkOrder   {         public void AssembleComputer(ComputerFactory fact)     {       Computer rad = fact.BuildComputer();       ComputerDesk cap = fact.BuildComputerDesk();       this.Assemble();     }          private void Assemble()     {       Console.WriteLine ("Assembling Computer and cap.");       Console.WriteLine();     }          public WorkOrder(){;}   }   class Client   {          static void Main(string[] args)     {             ComputerFactory factoryOne = new AComputerFactory();       WorkOrder workOne = new WorkOrder();       workOne.AssembleComputer(factoryOne);                      ComputerFactory factoryTwo = new BComputerFactory();       WorkOrder workTwo = new WorkOrder();       workTwo.AssembleComputer(factoryTwo);             ComputerFactory factoryThree = new CComputerFactory();       WorkOrder workThree = new WorkOrder();       workThree.AssembleComputer(factoryThree);     }        }