Sto tentando di ridefinire un po 'di codice e una delle principali modifiche è rimuovere l'uso (ab) di classi statiche per fornire lo stato globale.
Ho provato a suddividere parte della funzionalità "stato globale" con POJO che possono essere passati.
Ma più in basso nella tana del coniglio vado sempre più sento che questo è un Anti-Pattern.
È in grado di mantenere lo stato nei POJO e quindi passarli in cattiva forma? Significa che il profilo dei miei metodi assomiglia spesso a questo:
public MyPojo makeReport(int myInt, String pathToInput, MyPojo myPojo){
...
if(myPojo.whatKindOfReport()==Reports.reportTypes){
...
}
...
myPojo.isWritingReportToFileSuccessful(true);
....
return myPojo;
}
Dove lo "stato" POJO è impostato dalla GUI con cui l'utente interagisce. Ad esempio con caselle di spunta per i tipi di rapporto ecc.
Ma questo blocca altri tipi di ritorno, e sembra eccessivamente complicato.
Ho adottato questo approccio perché l'applicazione ha diversi "percorsi" (vedi whatAmIDoing
) che l'utente può utilizzare per eseguirlo, ognuno dei quali ha diverse fasi. Le opzioni che l'utente ha dipende in gran parte dal percorso che scelgono e da lì, il risultato di quella scelta (normalmente, successo o fallimento, vedi myPojo.isSomethingSuccessful(true)
). Sto cercando di codificare tali informazioni in un POJO piuttosto che in una Global State Class.
Questo è un anti-modello? Come posso aggirare questo?
Modifica: penso che quello che sto cercando sia qualcosa come Chain of Responsibility. Dopo aver letto questa risposta non ne sono sicuro.