Sto scrivendo un'applicazione in python. La parte su cui sono poco confuso sta fornendo una piccola struttura al mio codice.
Questo è il requisito di base della mia applicazione web.
Ho questi diversi punti finali:
- GET / reports / daywise.
- GET / reports / bulk_report_between_date_range.
- GET / reports / breakdown_by_age.
Per ciascuno di questi endpoint, ho definito un controller (una classe che gestisce il calcolo del risultato)
Il mio attuale design è il seguente:
Ho una classe base definita ReportBuilder
, e ha alcuni metodi setter come
- setDateRange ()
- setkeys ()
- setQuery ()
- Execute ()
Ora, per ciascun controller, eredito dalla classe base precedente e eseguo l'override dei metodi, se necessario.
class ControllerDayWise(ReportBuilder):
#..........
class ControllerBulkReport(ReportBuilder):
#..........
class ControllerBreakdownByAge(ReportBuilder):
#..........
Il problema con la progettazione sopra è che devo usare i metodi setter in un ordine specifico come devo chiamare setQuery()
prima di setDates()
, poiché la query avrà ovviamente delle date.
Mentre funziona, so che ci deve essere un modo migliore per strutturare la mia applicazione. Così, durante la ricerca, ho trovato l'utilizzo di interfacce in python zope.interface
.
L'idea è che creerò un'interfaccia IReportBUilder
e che i controllori la implementeranno. Solo con questo, tutti i attributes
e methods
devono essere ridefiniti in tutti i controller.
Qualche suggerimento sui pro / contro di ciascun metodo che ho considerato sopra? Come dovrei avvicinarmi a questo?