【设计模式】之 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(); } }