Sto usando una grande interfaccia con circa 50 metodi per accedere a un database. L'interfaccia è stata scritta da un mio collega. Ne abbiamo discusso:
Io: 50 metodi sono troppi. È un odore di codice.
Collega: cosa devo fare al riguardo? Vuoi l'accesso al DB - ce l'hai.
Io: Sì, ma non è chiaro e difficilmente gestibile in futuro.
Collega: OK, hai ragione, non è carino. Come dovrebbe apparire l'interfaccia allora?
Io: che ne dici di 5 metodi che restituiscono oggetti che hanno, ad esempio, 10 metodi ciascuno?
Mmmh, ma non sarebbe lo stesso? Questo porta davvero a una maggiore chiarezza? Ne vale la pena?
Ogni tanto mi trovo in una situazione in cui voglio un'interfaccia e la prima cosa che mi viene in mente è un'unica, grande interfaccia. Esiste un modello di progettazione generale per questo?
Aggiornamento (rispondendo al commento di SJuan):
Il "tipo di metodi": è un'interfaccia per il recupero di dati da un database. Tutti i metodi hanno il modulo (pseudocodice)
List<Typename> createTablenameList()
I metodi e le tabelle non sono esattamente in una relazione 1-1, l'enfasi è più sul fatto che si ottiene sempre un qualche tipo di elenco che proviene da un database.
List<WeatherDataRecord> createWeatherDataTable() {db.open(); return db.select("*", "tbl_weatherData");}
UserDao
e aCustomerDao
e aProductDao
)