Ho un sistema in cui eseguirò le query su un database. Desidero Query1, Query2 e Query3 per utilizzare gli stessi metodi nel loro percorso verso il livello di origine dati.
Per farlo vorrei fare qualcosa di simile a Strategia o Template Pattern, dove ho una parte del codice che è un comportamento predefinito per tutte le query (raggiungendo il livello del database, connessione, esecuzione della query e così via) e una parte variabile (costruendo la query stessa).
Penso che questa idea sia buona e fattibile. Ricevo un parametro dal client che specifica la query da costruire, lo costruisco ed eseguo. L'unica domanda è: dato questo parametro, come posso decidere quale metodo chiamare per costruire la query? Questa è la mia soluzione attuale: (questa soluzione è un modello?)
public Query QueryFactory(string queryIdentifier){
if(queryIdentifier == "query1")
return BuildQuery1();
else if(queryIdentifier == "query2")
return BuildQuery2();
}
Funziona, ma non penso che sia abbastanza "carino", mi piacerebbe qualcosa di più bello. Sarebbe perfetto se non richiedesse allo sviluppatore di aggiungere una nuova istruzione if quando ha creato una nuova query. C'è un modo per migliorare questa catena if / else? E rendere questa decisione automatica?
Modifica: Il problema che voglio risolvere è: ho delle query che verranno chiamate contro un database. Voglio avere lo stesso flusso in modo da non avere codice duplicato per le query a cui non è stata applicata alcuna logica di business (ad esempio: ottenere tutti gli utenti, ottenere tutti gli studenti e così via)