Il controllore riceve un elenco di diversi tipi di frutta dall'utente. Il controllore deve fare il succo da ognuno di questi frutti. Uno spremiagrumi può produrre succo di arancia e pompelmo; un altro spremiagrumi sa fare il succo di mela, banana e papaia; e così via. Ogni spremiagrumi può accettare più frutti in una volta sola, elabora solo i frutti di cui è capace e ignora gli altri frutti non toccati. Si prega di suggerire un design appropriato per questo problema. Ho preso in considerazione le seguenti opzioni:Dilemma di selezione del modello di progettazione
- controller chiama
MasterJuicer.juice(List<Fruit> fruits)
.MasterJuicer
a sua volta chiamaCitrusJuicer.juice(fruits)
ePulpyJuicer.juice(fruits)
. - La catena di responsabilità non sembra giusta. L'ordine in cui vengono chiamati gli spremiagrumi non ha importanza.
- Fabbrica? Controller chiama
JuicerFactory.getJuicers(List<Fruit> fruits)
per ottenere unList<Juicer>
. Il controller quindi scorre attraverso ogni spremiagrumi e chiamaJuicer.juice(fruits)
. È comune per una fabbrica restituire un elenco di istanze? - Mantenere un registro di Fruit vs. Juicer in un
Map
? Il controller chiamaFruitsRegistry.getJuicer(Fruit fruit)
per ogni frutto, quindi chiama ogni spremiagrumi in un ciclo.
Risposta molto accattivante. Sto per masticare queste idee per un po 'e vedere come queste avvantaggiano il mio reale scenario di business. E grazie per i link agli strumenti di scansione del classpath! – Somu