【设计模式】之 Simple Factory 简单工厂

来源:互联网 发布:网络音频服务器 编辑:程序博客网 时间:2024/06/04 16:28
 
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DesignFactory{    /// <summary>    /// 简单工厂    /// </summary>      public abstract class Light    {        public abstract void TurnOn();        public abstract void TureOff();    }    public class BulbLight : Light    {        public override void TurnOn()        {            Console.WriteLine("Bulb light is Turned On");        }        public override void TureOff()        {            Console.WriteLine("Bulb light is Turned off");        }    }    public class TubeLight : Light    {        public override void TurnOn()        {            Console.WriteLine("Tube light is Turned On");        }        public override void TureOff()        {            Console.WriteLine("Tube light is Turned off");        }    }    public class LightSimplyFactory    {        public Light Create(string LightType)        {            if (LightType == "Bulb")            {                return new BulbLight();            }            else if (LightType == "Tube")            {                return new TubeLight();            }            else                return null;        }    }    public class Client    {        public static void Main()        {            LightSimplyFactory lsf = new LightSimplyFactory();            Light l = lsf.Create("Bulb");            l.TurnOn();            l.TureOff();            Console.WriteLine("---------------------------");            l = lsf.Create("Tube");            l.TurnOn();            l.TureOff();        }        }        }
    /// <summary>    /// SimpleFactory简单工厂的演变    /// </summary>       public class Light2    {        public virtual void TurnOn()        { }        public virtual void TurnOff()        { }        public static Light2 Create(string LightType)        {            if (LightType == "Bulb")            {                return new BulbLight2();            }            else if (LightType == "Tube")            {                return new TubeLight2();            }            else                return null;        }    }    public class BulbLight2 : Light2    {        public override void TurnOn()        {            Console.WriteLine("Bulb light is Turned On");        }        public override void TurnOff()        {            Console.WriteLine("Bulb light is Turned off");        }    }    public class TubeLight2 : Light2    {        public override void TurnOn()        {            Console.WriteLine("Tube light is Turned On");        }        public override void TurnOff()        {            Console.WriteLine("Tube light is Turned off");        }    }    public class Client2    {        public static void Main()        {            Light2 l = Light2.Create("Bulb");            l.TurnOn();            l.TurnOff();            Console.WriteLine("---------------------------");            l = Light2.Create("Tube");            l.TurnOn();            l.TurnOff();        }    }


原创粉丝点击