Domanda

Ho difficoltà a capire come le classi devono comunicare tra loro. In un progetto in corso, molte lezioni sono diventate così radicate che ho iniziato a creare Singleton e campi statici per aggirare (da quello che ottengo questa è una cattiva idea).

È difficile esprimere il mio problema ed è come gli altri programmatori non hanno questo problema. Ecco un'immagine di una parte del programma: Diagramma di classe

  • EX1. Quando creo un oggetto Destination, sono necessarie informazioni da Infopanel. Come farlo senza creare un getter statico in InfoPanel?

  • EX2. DestinationRouting è utilizzato in tutti i marchi. Devo davvero farlo per cominciare e poi passarlo in tutti i rami?

Non sono sicuro che questo abbia senso per qualcuno :) È un problema che si ripresenta in ogni progetto.

È stato utile?

Soluzione

Ci sono troppo poche informazioni qui. Ad esempio, non sono nemmeno sicuro che MapPanel e InfoPanel dovrebbero essere come sono. Sarei tentato di provare il modello del decoratore per quello che vale. Non so nemmeno perché un Listener sia figlio di un Pannello. Dobbiamo sapere cosa sono questi oggetti e di che sistema si tratta.

Altri suggerimenti

Dopo aver esaminato il tuo diagramma di classe, penso che stai applicando una mentalità procedurale a un problema di OO. I tuoi singoli sembrano contenere tutti i comportamenti che operano sui record nel tuo modello di dominio e i record hanno un comportamento molto scarso.

Al fine di comprendere meglio il tuo modello di oggetto, proverei a classificare le relazioni (linee) nel diagramma della classe come una delle "quotazioni è-a", "ha-a", ecc. che puoi vedere meglio quello che hai.

La destinazione richiede alcune informazioni da InfoPanel, ma probabilmente non tutte le informazioni. È possibile passare solo le informazioni necessarie a Destinazione anziché a InfoPanel?

Quale stato viene acquisito nella classe DestinationRouting che lo costringe a diventare un singleton? Tali informazioni appartengono altrove?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top