您的位置:首页 > 其它

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

2012-03-02 15:59 190 查看
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();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: