Attualmente sono in fase di modellazione di una forma generica di trascrizione di RNA e RNA e sto riscontrando difficoltà nel trovare una modellazione OO corretta di questa area.
L'RNA umano ha 4 tipi di Nucleotidi (A, G, U e C). Un filamento di RNA è solo una stringa di questi 4 tipi. ad esempio, AAGACAUUCUA ...
Quello che sto cercando di modellare è più generico nel senso che voglio essere in grado di decidere il numero di tipi Nucleotide in fase di runtime. Quindi, il mio modello di oggetti deve essere in grado di rappresentare un numero arbitrario di tipi di nucleotidi .
Inizialmente, pensavo di avere solo una classe Nucleotide con un membro int TypeId . In questo modo, potrei avere una sequenza di istanze Nucleotide di tipi arbitrari ... ma questo non sembra giusto.
Non sono un grande fan del tipo di archiviazione in una variabile. Inoltre, non mi sento a mio agio con ciò che è essenzialmente definizione informazioni impostate su ogni istanza (invece di essere definite nella classe a).
Quindi, come faccio a evitare questo? Ecco cosa ho scoperto finora:
- In un progetto precedente, avremmo degli oggetti Singleton che rappresentavano il tipo di un altro oggetto. L'altro oggetto farebbe semplicemente riferimento al singleton e così è stato. Ci ha impedito di avere più istanze della "definizione" dei nostri tipi. IMO non troppo grande.
- Ricordo Entity Framework che genera proxy dinamici in fase di runtime. Potrei quindi qualcosa di simile. Potrei avere una classe base NucleotideBase e, in fase di runtime, definire le classi derivate. Credo che questo sia possibile attraverso la riflessione. Non sono sicuro di quale sia l'impatto sulle prestazioni con questo approccio, ma suppongo che si tratti di un unico overhead durante la definizione delle classi.
Ci sono migliori, più OO, approcci?