Double Dispatch Flashcards
1
Q
Explicar el patron DOUBLE DISPATCH
A
El patron también es conocido como doble polilmorfismo. El paradigama en si no cuenta con doble polimorfismo, pero este patron nos ayuda a obtenerlo el mismo efecto.
Los método se van a comportar distinto de acuerdo al objeto instanciado y también de acuerdo al parámetro que reciban.
Ej. Modelar el juego de piedra, papel o tijera utilizando este patron.
Se puede crear una interface Elemento, que tenga las firmas de los métodos:
public void contra(Elemento elemento); public void contraPapel (Papel papel); public void contraPiedra (Piedra piedra): public void ContraTijera (Tijera tijera);
Luego en las clases Piedra, Papel y Tijera voy a implementar las firmas:
Public class Piedra implements Elemento { @Overrride public void contra(Elemento elemento) { elemento.contraPiedra(this); } @Overrride public void contraPapel(Papel papel) { System.out.println(“Gana papel”); } @Overrride public void contraTijera(Tijera tijera) { System.out.println(“Gana piedra”); } @Overrride public void contraPiedra(Piedra piedra) { System.out.println(“Empate”); } }
y en el main, puedo hacer:
Elemento e1 = new Piedra(); Elemento e2 = new Papel(); e1.contra(e2); //gana papel e2 = new Piedra(); e1.contra(e2); //empate