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?