例如,我有這個類:如何僅基於基本類型創建派生對象?
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 –