Come si fa a progettare classi per un sistema in cui due componenti dipendono l'uno dall'altro?
Per un esempio più concreto, considera questo scenario, stai progettando un software per gestire studenti, insegnanti e classi in una struttura educativa. Per motivi di praticità, desideri che il tuo oggetto Class
sia in grado di eseguire una query per Student
s che sono registrati all'interno della sua istanza. Allo stesso tempo, ti piacerebbe sapere che cos'è Class
es a Student
è iscritto.
Un design semplice può includere un contenitore che contiene istanze di tipo Class
nell'oggetto Student
e un contenitore che contiene istanze di Student
nell'oggetto Class
. Fa il lavoro ma introduce una dipendenza ciclica tra le due classi. Di solito, questo è guardato dall'alto in basso [citazione necessaria], ma suona come un disegno valido in cui questo potrebbe essere utile.
C'è una ragione per cui sarebbe una cattiva idea farlo? E in che modo questa situazione può essere corretta senza introdurre significativi costi generali delle prestazioni?