Controllo dell'uguaglianza di un parametro di richiesta

0

Ho una tabella di codici che memorizza coppie di valori nome e un nome di gruppo.

Quindi per questo esempio fammi dimostrare con due righe, ogni riga rappresenterebbe un valore nello stesso menu a discesa.

Nome gruppo="Drop_Down_1" Nome = 'Valore 1' Valore = 'Questo è il mio valore'

Nome gruppo="Drop_Down_1" Nome = 'Valore 2' Valore = 'Questo è il mio valore 2'

Questo valore è a parte una discesa su una pagina web. Se selezionato e inviato il codice backend otterrebbe il valore 'Questo è il mio valore', se quel valore nel menu a tendina è stato selezionato. Ora, a seconda della selezione a discesa, voglio fare qualcosa.

Quindi ora ho bisogno di confrontare la stringa nel comando di richiesta con qualcosa.

Quello che NON voglio fare è qualcosa di simile a questo:

    if(requestParam.equals('This is my value') {
        do something
    }
    else if(requestParam.equals('This is my value 2') {
        do something else
    }

Ora posso interrogare il database e recuperare i codici appropriati e confrontarli con quelli per l'uguaglianza. Ma come potrei sapere quale azione eseguire?

    
posta Jeremy 03.02.2014 - 22:12
fonte

1 risposta

0

Come indicato da MikeBabcock, qui è applicabile una variante del Pattern di comando .

  1. Crea una struttura che incapsula la logica che vorrai eseguire:

    public interface RequestHandler{
       public void handleRequest();
    }
    
    public class RequestHandlerImpl{
       public void handleRequest(){
          //do your thing
       }
    }
    

    Creerai implementazioni di RequestHandlerImpl per incapsulare la logica di business specifica del caso d'uso

  2. Gestisci le istanze dei tuoi gestori in Map . Qui, RequestParam è un ipotetico Enum che corrisponde agli elementi del menu a discesa. Non ti consiglio di utilizzare% raw_co% per gestire questo

    Map<RequestParam,RequestHandler> handlers = new HashMap<RequestParam, RequestHandler>(); //this is going to hold your handlers
    
  3. Utilizzando String (argomenti String dal tuo menu a discesa), puoi estrarre il gestore desiderato dalla mappa, senza un'istruzione RequestParam :

     public void execute(){
        handlers.get(MY_VALUE_1).handleRequest();
     }
    

Lo consiglierei comunque, se hai più di 3 possibili corsi di azione, in base ai tuoi argomenti. Qualsiasi meno, l'implementazione di cui sopra potrebbe essere eccessivo; una semplice dichiarazione if sulle enumerazioni potrebbe essere più efficace e più facile da leggere

    
risposta data 05.02.2014 - 00:06
fonte

Leggi altre domande sui tag