Ho un programma python di medie dimensioni (~ 5000 linee di codice), che ho accumulato nel tempo, senza alcun piano particolare mentre procedevo. L'architettura con cui ho finito è composta da 5-6 oggetti Singleton di grandi dimensioni, ognuno dei quali gestisce un determinato aspetto del mio programma, come le comunicazioni del database, un server Web, un client di raccolta dati e calcoli interni.
Ritengo che l'uso di numerosi singleton come questo non sfrutti realmente il vero vantaggio della programmazione OO, ovvero che ti consenta facilmente di creare numerosi oggetti correlati. I miei singleton sono anche abbastanza dipendenti l'uno dall'altro, e se sviluppassi molto il programma (diciamo ~ 50.000 righe), posso vedere il mio approccio diventare spaghetti code.
Quindi mi chiedo se c'è un modo migliore per strutturare il mio programma. Per esempio. i miei singleton dovrebbero essere in realtà moduli separati? Ma allora come potrei avvicinarmi agli attributi che sono molto ben organizzati nei miei oggetti singleton? Ci sono altre opzioni di architettura?
Non ho molta familiarità con i modelli di progettazione (il libro GOF è sulla mia lista delle cose da fare) quindi forse ci sono design e / o pattern architettonici che sarebbero migliori per il mio programma?