Monday, October 29, 2007

Singleton Factory Class C#

 

 

class Base
{
        public virtual string Message
        {
            get
            {
                return "Message From Base";
            }
        }
}
class Detived1 : Base
{
        public override string Message
        {
            get
            {
                return "Message From Detived1";
            }
        }
}
class Detived2 : Base
{
        public override string Message
        {
            get
            {
                return "Message From Detived2";
            }
        }
}
class ObjectFactory
{
     public Base this[string className]
     {
         get
         {
            switch (className.ToUpper())
            {
               case "DERIVED1":
                    return new Detived1();
               case "DERIVED2":
                    return new Detived2();
                default:
                    return new Base();
             }
          }
     }
     public static ObjectFactory Instance
     {
         get
         {
              return _Instance;
         }
     }
     private ObjectFactory() { }
     private static readonly ObjectFactory _Instance = new ObjectFactory();
}
class App
{
   public static void Main()
   {
            Console.WriteLine(ObjectFactory.Instance["DERIVED1"].Message);
            Console.WriteLine(ObjectFactory.Instance["DERIVED1"].Message);
            Console.WriteLine(ObjectFactory.Instance["Test"].Message);
   }
}

 

No comments: