Ho applicato i principi del GRASP e ho finito per avere una classe chiamata Ambiente. Le responsabilità di questa classe sono:
- Mantieni informazioni sui servizi nell'ambiente, ad es. definizione dell'ambiente (il servizio è un'altra classe)
- Avvia / interrompi servizi che soddisfano alcuni criteri
- Applica modifiche di configurazione a diversi servizi e mantieni l'elenco dei servizi aggiornati
- Riavvia i servizi con la modifica della configurazione
- Ripristina le modifiche alla configurazione alla fine della sessione
- Cerca / Fornisci una classe di servizio in base a criteri (nome ecc.)
Secondo OOD, questo non è un problema: la responsabilità molto coesa è assegnata a questa classe .
Ma d'altra parte è un problema poiché la classe è troppo grande , anche se ha senso ogni responsabilità assegnata ad essa. Se voglio dividere questa responsabilità tra classi separate, tutte queste classi devono conoscere la "definizione dell'ambiente", che rende l'aggancio peggiore e quelle classi avranno "l'invidia caratteristica" .
Quali modelli di design sono applicabili a tale situazione? O quali altri principi possono essere applicati per avere classi coesive, meno accoppiate?
Grazie in anticipo.