Junior — Middle
Môžeš uviesť príklad implementácie vzoru Chain of Responsibility v programovacom kóde?
sobes.tech AI
Odpoveď od AI
Vzorec Reťazec zodpovednosti umožňuje odovzdanie požiadavky pozdĺž reťazca spracovateľov, kým ju niektorý z nich ne spracuje.
Príklad v C#:
// Abstraktný spracovateľ
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);
}
}
}
// Konkrétne spracovatelia
class ConcreteHandlerA : Handler
{
public override void Handle(string request) {
if (request == "A") {
Console.WriteLine("Spracované ConcreteHandlerA");
} else {
base.Handle(request);
}
}
}
class ConcreteHandlerB : Handler
{
public override void Handle(string request) {
if (request == "B") {
Console.WriteLine("Spracované ConcreteHandlerB");
} else {
base.Handle(request);
}
}
}
// Použitie
var handlerA = new ConcreteHandlerA();
var handlerB = new ConcreteHandlerB();
handlerA.SetNext(handlerB);
handlerA.Handle("B"); // Vytlačí: Spracované ConcreteHandlerB
V tomto príklade je požiadavka odovzdaná pozdĺž reťazca spracovateľov, kým sa nenájde vhodný.