Come evitare di infastidire il codice con IFs [duplicato]

1

Devo aggiungere un nuovo tipo di pagamento a una base di codice esistente. Ciò significa che avrò alcuni metodi in questo modo:

if (old payment type)
    process old type of payment
else
    process new type of payment

Ora, se questo potesse essere stato determinato in anticipo, avrei questo metodo puntare a un'interfaccia che implementasse un metodo Pay comune e quindi quell'interfaccia sarebbe implementata da una delle due classi. Sfortunatamente, so solo quale metodo il cliente sceglie in fase di esecuzione, il che significa che ho bisogno di un modo per determinare quale ramo utilizzare. C'è un altro modo tranne che per avere il if s diffuso attraverso il codice?

    
posta Marcel Popescu 29.07.2013 - 11:04
fonte

1 risposta

4

Questo è un esempio da manuale di Modello di strategia .

...a software design pattern, whereby an algorithm's behaviour can be selected at runtime. Formally speaking, the strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it...

Questo ti permetterà di avere diverse implementazioni su come paghi e puoi crearne uno concreto in fase di runtime in base ai dati salvati insieme al pagamento.

    
risposta data 29.07.2013 - 12:35
fonte

Leggi altre domande sui tag