L'altro giorno stavo guardando Chain Of Responsibility e ho trovato l'esempio this.Qual è la differenza tra il modello di progettazione Chain Of Responsibility e l'utilizzo di un blocco if-elseif-else semplice?
In sostanza, esiste un gestore astratto e quindi sono gestori concreti, ognuno dei quali implementa il metodo handle del gestore astratto padre. L'implementazione è tale che inizialmente è presente un controllo per vedere se questo particolare gestore può elaborare la richiesta corrente e, in caso contrario, passa la richiesta al suo successore.
Ora, potrei anche fare la stessa cosa usando un semplice blocco condizionale if else. Per prendere il primo esempio dal link qui sopra, ecco come lo cambierei:
class SingleHandler
{
if(request > 0 && request <= 10)
{
// Process request
}
else if(request > 10 && request <= 20)
{
// Process request differently
}
else if(request > 20 && request <= 30)
{
// Process request differently
}
}
Ora, la mia domanda è, qual è la differenza fondamentale tra i due? C'è qualche ragione specifica per cui dovrei usare Chain Of Responsibility, se posso fornire la stessa identica funzionalità usando i blocchi if-else? Qual è il migliore in termini di prestazioni, consumo di memoria, manutenibilità, scalabilità?