Sobes.tech
Junior — Middle

Podes dar um exemplo de implementação do padrão Chain of Responsibility em código de programação?

sobes.tech IA

Resposta da IA

O padrão Chain of Responsibility permite passar a solicitação ao longo de uma cadeia de manipuladores até que um deles a processe.

Exemplo em C#:

// Manipulador abstrato
abstract class Handler
{
    protected Handler next;

    public void SetNext(Handler nextHandler) {
        next = nextHandler;
    }

    public virtual void Handle(string request) {
        if (next != null) {
            next.Handle(request);
        }
    }
}

// Manipuladores concretos
class ConcreteHandlerA : Handler
{
    public override void Handle(string request) {
        if (request == "A") {
            Console.WriteLine("Processado por ConcreteHandlerA");
        } else {
            base.Handle(request);
        }
    }
}

class ConcreteHandlerB : Handler
{
    public override void Handle(string request) {
        if (request == "B") {
            Console.WriteLine("Processado por ConcreteHandlerB");
        } else {
            base.Handle(request);
        }
    }
}

// Uso
var handlerA = new ConcreteHandlerA();
var handlerB = new ConcreteHandlerB();
handlerA.SetNext(handlerB);

handlerA.Handle("B"); // Vai mostrar: Processado por ConcreteHandlerB

Neste exemplo, a solicitação é passada ao longo da cadeia de manipuladores até que um adequado seja encontrado.