Nel contesto della programmazione sportiva, ho una classe ViolationChecker
intializzata con una Match
, il cui compito è controllare se posizionare la corrispondenza in un dato intervallo di tempo produce una violazione della regola o meno. Un esempio del suo utilizzo sarebbe:
checker = ViolationChecker(match)
match_fits_in_timeslot = checker.check(timeslot)
Il lavoro principale del processo di pianificazione è trovare un adeguato intervallo di tempo per la corrispondenza ervery nella pianificazione, quindi avremo un ViolationChecker
per ciascuna di queste corrispondenze.
Nella classe di pianificazione, troveremmo qualcosa in questo modo:
if checker.check(timeslot):
match.timeslot = timeslot
match.save()
Ora, la decisione che devo prendere è dove dovrei memorizzare le istanze di ViolationChecker
:
- Dovrebbero essere membri della classe
Match
? Sarebbe stato possibile accedervi in questo modo:match.checker
. - Oppure dovrebbero essere memorizzati in un dizionario di
Match
-ViolationChecker
nella classeScheduler
? Sarebbero stati raggiunti in questo modo:violation_checkers[match]
.
L'opzione A è molto più pulita, mentre l'opzione B è un po 'scomoda. Tuttavia, ha più senso che la responsabilità di chiamare il correttore si trova nella classe Scheduler
, il cui compito è, beh, pianificare, piuttosto che chiamarlo da un Match
, che è solo un'entità e non necessariamente avere qualcosa a che fare con il processo di pianificazione.
Di solito come viene affrontato questo scenario? Dovrebbe essere un membro o dovrebbe essere usato un dizionario?