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:
Post a Comment