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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly