Sto lavorando al refactoring di un progetto. La logica aziendale sembra molto simile all'utilizzo del modello di strategia sarebbe molto utile, perché in base ai valori di tre proprietà (diciamo età, sesso e stipendio), viene applicata una politica di sconto e di convalida diversa.
La mia prima idea è stata quella di mettere la logica responsabile per decidere quale politica applicare in StrategyFactory, e fare in modo che restituisca un'implementazione diversa dell'interfaccia di una strategia. La mia preoccupazione è legata a dove e dove non usare DI. StrategyFactory richiederà alcuni DI per chiamare altri servizi, così come alcuni, ma non tutti gli oggetti della strategia.
Quindi alla fine, devo annotare quasi tutto come un @ Service / @ Component o fare in modo che la Factory invii i servizi alle strategie tramite parametro, cosa che sembra ancora peggio.
Mi manca qualcosa o è normale? Potrebbe essere che i livelli dell'applicazione siano troppo aggrovigliati? Non è questo il caso / modo giusto per usare il modello di strategia?
Ho solo bisogno di una breve risposta se c'è qualcosa che suona molto chiaramente sbagliato.