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.