C#构造函数请教!
public class Light
{
public virtual void TurnOn()
{
}
public virtual void TurnOff()
{
}
public static Light Create(string LightType)
{
if(LightType == "Bulb")
return new BulbLight();
else if(LightType == "Tube")
return new TubeLight();
else
return null;
}
}
public class BulbLight : Light
{
public override void TurnOn()
{
Console.WriteLine("Bulb Light is Turned on");
}
public override void TurnOff()
{
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 TurnOff()
{
Console.WriteLine("Tube Light is Turned off");
}
}
谁能解释一下红色部分,就是用类的类型(Light)来建立函数,没有看懂。谢谢。
[解决办法]
感觉有点像工厂
但不应该放到父类里Create吧
难道是简化+偷懒版本工厂?
工厂的缺点:
事先要知道有多少个类
然后增加一个类又得回头修改switch分支
[解决办法]
public static Light Create(string LightType){}
这不是构造函数,这个只是静态方法,创建Light类的函数
构造函数
public Light(){}
public Light(string str){}
static void Main(){ var light = Light.Create("Tube"); light.TurnOn();}// Output: "Tube Light is Turned on"
[解决办法]