Al momento ho un numero di classi (~ 20) che fanno tutte la stessa cosa (astrattamente), cioè generano un'istanza di una particolare classe da un file xml.
Il modo in cui usano il contenuto del file xml varia un po 'e i dati vengono archiviati in diverse sottostrutture (campi, gruppi, ecc.) che sono condivisi tra le classi, quindi ho preso tutto l'analisi e il campo informazioni dai file e creato una classe helper (come è il tipo costruttivo finale)
Tutte le classi e i metodi sopra riportati sono statici, in quanto non hanno bisogno di contenere nessuno stato.
Quindi volevo che tutte le classi derivassero da una classe comune in modo tale che non mi riferissi costantemente a una classe apparentemente non correlata, solo per scoprire che ereditarietà e staticità non funzionano bene insieme.
Qual è il modo appropriato di configurarlo? È basicamente un grande insieme di metodi di fabbrica per un tipo che non richiede stato.
Aggiornamento: il flusso di controllo è attualmente il seguente:
- Scegli uno dei ~ 20 metodi di fabbrica
- Leggi in un file XML (tutti i tag, gli attributi sono gli stessi tra i file, ma i file sono distinti attraverso i metodi).
- Converti il contenuto dei file XML in una classe che ha alcune strutture dati come membri (
List<Field>, List<Group>, Dictionary<string,string>
ecc.). Queste strutture dati utilizzano tipi annidati nell'helper. - Aggiungi queste raccolte all'oggetto non inizializzato.
- Restituisce l'oggetto al chiamante.
In questo momento, i 20 metodi di fabbrica sono le proprie classi statiche e tutti restituiscono oggetti dello stesso tipo, anche se potrebbe esserci qualche differenza semantica tra i "tipi" tutti i memebers e le funzioni sono gli stessi. Il codice che analizza il file XML è in un helper, poiché questa logica è comune a tutti i metodi di fabbrica. Il passaggio 3 deve essere diverso per tutti i metodi, in modo tale che la parte si trovi nelle classi statiche.