Sobes.tech
Junior — Middle

Můžete vysvětlit, co se rozumí pod pojmem interceptor v programování?

sobes.tech AI

Odpověď od AI

Interceptor (zachytávač) je návrhový vzor, ktorý umožňuje zachytávať volania metód alebo spracovanie správ na pridanie dodatočej logiky bez zmeny hlavného kódu.

V jazyku C# sa interceptor často používa v kontexte aspektovo-orientovaného programovania (AOP) alebo pri práci s proxy objektmi. Napríklad, je možné zachytávať volania metód na účely logovania, kontroly oprávnení, cacheovania alebo spracovania výnimiek.

Príklad použitia interceptora s Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Volanie metódy {invocation.Method.Name} začalo");
        invocation.Proceed(); // volanie pôvodnej metódy
        Console.WriteLine($"Volanie metódy {invocation.Method.Name} skončilo");
    }
}

// Vytvorenie proxy s interceptorom
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Týmto spôsobom interceptor umožňuje vkladať dodatočné správanie okolo volaní metód bez zmeny ich implementácie.