Categorías
Design Patterns Stories

Patrón de diseño de Java: cadena de responsabilidad

La idea principal del patrón de diseño de Cadena de Responsabilidad es construir una cadena de unidades de procesamiento, cada unidad maneja la solicitud si se satisface el umbral. Dado que se construye una cadena, si una unidad no está satisfecha, se probará la siguiente unidad, y así sucesivamente. Cada solicitud se procesará a lo largo de la cadena.

Diagrama de clases de cadena de responsabilidad

Cadena de responsabilidad Código Java

package designpatterns.cor;
 
abstract class Chain {
    public static int One = 1;
    public static int Two = 2;
    public static int Three = 3;
    protected int Threshold;
 
    protected Chain next;
 
    public void setNext(Chain chain) {
        next = chain;
    }
 
    public void message(String msg, int priority) {
        //if the priority is less than Threshold it is handled
    	if (priority <= Threshold) {
            writeMessage(msg);
        }
 
        if (next != null) {
            next.message(msg, priority);
        }
    }
 
    abstract protected void writeMessage(String msg);
}
 
class A extends Chain {
    public A(int threshold) { 
        this.Threshold = threshold;
    }
 
    protected void writeMessage(String msg) {
        System.out.println("A: " + msg);
    }
}
 
 
class B extends Chain {
    public B(int threshold) { 
        this.Threshold = threshold;
    }
 
    protected void writeMessage(String msg) {
        System.out.println("B: " + msg);
    }
}
 
class C extends Chain {
    public C(int threshold) { 
        this.Threshold = threshold;
    }
 
    protected void writeMessage(String msg) {
        System.out.println("C: " + msg);
    }
}
 
 
public class ChainOfResponsibilityExample {
 
    private static Chain createChain() {
        // Build the chain of responsibility
 
    	Chain chain1 = new A(Chain.Three);
 
    	Chain chain2 = new B(Chain.Two);
    	chain1.setNext(chain2);
 
        Chain chain3 = new C(Chain.One);        
        chain2.setNext(chain3);
 
        return chain1;
    }
 
    public static void main(String[] args) {
 
    	Chain chain = createChain();
 
        chain.message("level 3", Chain.Three);
 
        chain.message("level 2", Chain.Two);
 
        chain.message("level 1", Chain.One);
    }
 
}
  Patrón de diseño de Java: Singleton

En este ejemplo, el nivel 1 pasa por todas las unidades de la cadena.

A: nivel 3
A: nivel 2
B: nivel 2
A: nivel 1
B: nivel 1
C: nivel 1

Este ejemplo está simplificado de Wiki – http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern

Patrón de cadena de responsabilidad utilizado en Java JDK

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *