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.