Nella mia app ho un Controller
avviato con il metodo principale. Il controller inizializza gli hook, le connessioni al database, l'interfaccia utente, un'altra connessione e altre cose. Detiene la maggior parte dello stato del programma (no, non è un Singleton). In un altro esempio c'è un controller per il bot che gestisce l'interpretazione e l'invio di comandi. Entrambi sono file piuttosto grandi.Come posso scrivere un controller senza renderlo un oggetto God?
Ho letto su oggetti di Dio, ma non so davvero come dividerlo. Se divido l'interprete e il dispatcher nel bot, farò una catena di chiamate orribile (qualcosa come getBot().getParser().getOutput().sendMessage(recipient, message)
). Allo stesso modo nel primo Controller, se divido le cose, avresti solo oggetti Data che contengono campi e alcuni metodi di utilità alias. Dividerli non farebbe altro che peggiorare le cose. E prima che tu pensi che sia irrinunciabile, in realtà non lo è. Non ho nemmeno scritto il controller Bot, ma so ancora cosa sta succedendo.
Il problema è che la classe Bot è lunga 2000 righe (probabilmente più breve se ho estratto i commenti Javadoc) e il Bot è lungo circa 1000 righe. Molte linee = Dio oggetto. Ma va bene per una o due classi principali di un progetto?
Correlati: [Progettare una classe in modo che non diventi un "oggetto di Dio"] (http://stackoverflow.com/questions/2589703/designing-a-class-in-such-a- way-it-it-doesnt-become-a-god-object) –
@jleedev L'ho visto, ma questo è un altro problema. L'OP in cui possono essere creati oggetti secondari funziona correttamente poiché è tutto interno. Tuttavia, il mio caso è un controller API pubblico che deve rimanere semplice dove non riesco a far fare il lavoro a nessun altro oggetto. – TheLQ