Langs come Java conosce l'overloading del metodo true :
class Overload {
void demo (int a) {
System.out.println ("a: " + a);
}
void demo (int a, int b) {
System.out.println ("a and b: " + a + "," + b);
}
}
Se langs come PHP - no. Quindi, quando ti trovi di fronte a un problema di elaborazione di qualcosa che dipende dal contesto, a quali vie penserai e quali di solito sceglieranno?
Il tipico problema potrebbe essere un sistema di pagamento astratto, in cui l'utente esterno non dovrebbe pensare a dettagli concreti del fornitore di pagamenti (che potrebbero essere diversi) e chiamare semplicemente Provider.pay(PayDetails)
. Nell'interfaccia di PaymentProvider dobbiamo correggere che funziona con PayDetails. Ma nelle implementazioni concrete il fornitore concreto potrebbe lavorare, ad esempio, solo con il proprio ConcretePayDetails.
Vale la pena di aggiungere polifrati come il polimorfismo ad-hoc nei lang che non lo supportano?
Come risolvere meglio i metodi relativi al contesto che vengono inviati in tali lingue?
Esempio di implementazione possibile disponibile su link