Ho un dominio semplice con circa 6 oggetti nel modello. Per la maggior parte hanno un chiaro rapporto figlio / genitore con il genitore che ha figli multipli. Ho intenzione di avere tutti loro immutabili. Tuttavia, ad un certo punto avrò bisogno sia di recuperare un insieme di tutti gli oggetti di un determinato tipo, sia di recuperare un oggetto specifico di un certo tipo tramite la sua etichetta.
Avrei avuto un modello con alcune mappe generiche e una classe astratta per gli oggetti nel modello. Aggiungendo al modello si attacca l'oggetto nella mia mappa e si chiede gli oggetti genitore e si attacca quelli nella mappa, ecc. Allo stesso modo una cancellazione può cancellare tutte le classi che si definiscono bambini. In questo modo posso interrogare per classi specifiche in un metodo generico senza scrivere la logica per dare la caccia a ogni classe.
Una volta pensato a questo, il mio prossimo pensiero è stato piuttosto di poter utilizzare un framework simile per risparmiare CPU cercando i bambini nello stesso modo. Se devo già memorizzare "questi oggetti hanno affermato che x era un genitore" per fare l'eliminazione posso quindi dire "dammi figli di X". Tuttavia, questo presuppone che X sappia qualcosa sugli altri oggetti (quali classi sono effettivamente figli di esso). Posso inserire il tipo safty tramite riflessione principalmente; ma è fragile per un oggetto presumere che certe altre classi lo rivendichino come genitore e si inseriscano con sicurezza nel modello in quanto tale?
Per chiarire, diciamo che ho una classe nodo e bordo. Il mio spigolo segnalerebbe un nodo come genitore. Il mio nodo può quindi dire "dammi tutti gli oggetti che mi hanno sostenuto come genitore e sono spigoli" e fare la logica su di loro; anche se non ha mai fatto nulla per assicurare che ci fossero dei bordi là fuori che lo usassero come nodo. È sbagliato?
Nota, questo è un piccolo sistema. So che esistono grandi schemi di astrazione per sistemi enormi, che per la maggior parte non credo valgano il costo di implementazione o il codice meno esplicito per un sistema così semplice.