I 2 Klassen haben, die von einer abstrakten Klasse abgeleitet sinddynamisch Instanz einer Klasse erstellen, die von einer abstrakten Klasse abgeleitet ist
abstract class Order
{
public virtual boolean Export()
{
...
}
}
class TradeOrder : Order
{
public override bool Export()
{
//Create a new order
}
}
class LibraryOrder : Order
{
public override bool Export()
{
//Dont create order but Update an existing order
}
}
TradeOrder für Customer „Handel“ erstellt und LibraryOrder wird für Customer „Bibliothek erstellt ".
Der Kundentyp wird in naher Zukunft wachsen.
Wie erstelle ich eine Instanz der abgeleiteten Klasse basierend auf dem Kundentyp ohne zu verwenden, wenn ... else oder swicth ... case?
Die Instanz der Klasse ruft die Exportmethode auf, um einen Kundenauftrag zu erstellen oder zu aktualisieren.
-Alan-
Wie stellen Sie Kundentypen im Code dar? Haben Sie beispielsweise eine Klasse pro Kundentyp, die alle aus einer Basis-Kundenklasse stammt? –
Hilft das? http://stackoverflow.com/questions/17835839/use-an-enum-to-select-which-class-to-instantiate – sgeddes
@MichaelLiu, customerType ist eine enum im Moment und ist in der aufrufenden Methode –