Diciamo che abbiamo una classe astratta chiamata BaseSwitch
, ereditata da implementazioni concrete Switch A
e Switch B
, ogni switch rappresenta un interruttore di vita reale (uno strumento di telefonia che tra le sue responsabilità sta scrivendo CDR; tutti i record di dati delle chiamate che colpiscono l'interruttore).
Ogni switch nella vita reale scrive CDR in un formato diverso e in diverse fonti, ad esempio alcuni switch scrivono su un file di testo che un altro scrive su un database MySQL.
Gli switch come entità e dettagli CDR sono definiti dall'utente finale del sistema
Il mio obiettivo è scrivere Importer
classi responsabili dell'importazione di CDR in base all'origine dei dati determinati dall'entità switch nel mio sistema, ma nascondendo Importer
dalle classi switch.
Lo strato responsabile dell'importazione del CDR eseguirà un loop su switch e instatterà un oggetto "Importer", in base al formato CDR definito in ogni switch.
Qualcuno può suggerire un approccio da usare?
MODIFICA: Ulteriori chiarimenti di seguito:
SwitchBase di classe pubblica { public abstract string CDRFormat {get; } }
public class SwitchA:SwitchBase
{
public override string abc
{
get { return "Text"; }
}
}
public class SwitchB : SwitchBase
{
public override string CDRFormat
{
get { return "MySQLDatabase"; }
}
}
public class CDR
{ }
public class MySQLImporter
{
ICollection<CDR> GetCDR()
{
//DoSomething
}
}
public class TextImporter
{
ICollection<CDR> GetCDR()
{
//DoSomething
}
}