de la misma página el UML :
Es muy revelador la afirmación que allí nos hacen. Chain of Responsibility, Command, Mediator y Observer son diferentes maneras de desacoplar el origen y destino en una comunicación.
y el ejemplo que allí ponen en java solo tiene una clase.Un Handler que bien podría ser "Handler One" sino fuera por que no hereda de nadie. A parte se genera un cliente que con una Array de Handlers sobre los que se executa handle. Este método devuelve boolean que mientras es falso sigue iterando sobre la cadena de Handlers.
sourcemaking.com/design_patterns/chain_of_responsibility/java/1
class Handler
{
private static java.util.Random s_rn = new java.util.Random();
private static int s_next = 1;
private int m_id = s_next++;
public boolean handle(int num)
{
if (s_rn.nextInt(4) != 0)
{
System.out.print(m_id + "-busy ");
return false;
}
System.out.println(m_id + "-handled-" + num);
return true;
}
}
public class ChainDemo
{
public static void main(String[] args)
{
Handler[] nodes =
{
new Handler(), new Handler(), new Handler(), new Handler()
};
for (int i = 1, j; i < 10; i++)
{
j = 0;
while (!nodes[j].handle(i))
j = (j + 1) % nodes.length;
}
}
}
Sospechoso que no se haya respetado el esquema. Queda así desacoplado quien
envia el mensaje de quien lo recibe?
Vamos con otro.
http://java.dzone.com/articles/design-patterns-uncovered-chain-of-responsibility
En este caso en vez de hacerse un triste Array se genera una cadena a través de los propios Handlers.
http://howtodoinjava.com/2013/04/22/chain-of-responsibility-design-pattern/
No hay comentarios:
Publicar un comentario