例如,我有这个类:如何仅基于基本类型创建派生对象?
public abstract class Device
{
public Device()
{
}
public Device(XmlDevice xmlDevice)
{
// creating device by xmlDevice
}
}
public class Modem : Device
{
public Modem()
{
}
public Modem(XmlModem modem)
{
// creating modem by xmlModem
}
}
public class Plc : Device
{
public Plc()
{
}
public Plc(XmlPlc plc)
{
// creating plc by xmlPlc
}
}
public abstract class XmlDevice
{
public XmlDevice()
{
}
}
public class XmlModem : XmlDevice
{
public XmlModem()
{
}
}
public class XmlPlc : XmlDevice
{
public XmlPlc()
{
}
}
我有XmlDevice对象名单 - 我怎么能基于其类型创建设备对象?我能做到这一点是这样的:
foreach(xmlDevice in xmlDevicesList)
{
if(xmlDevice is XmlModem)
devicesList.Add(new Modem((XmlModem)xmlDevice));
else if(xmlDevice is XmlPlc)
devicesList.Add(new Plc((XmlPlc)xmlDevice));
}
但我想避免“是”语句和转换对象。更干净的方式来做到这一点?
阅读关于工厂设计模式 –
好的,但在工厂,我必须使用“是”并施展太多......? – Bero
请看看我几年前提出的类似问题的回复:http://stackoverflow.com/questions/15998071/getting-past-open-closed-principle –