Junior — Middle
Môžete vysvetliť, čo sa rozumie pod pojmom interceptor v programovaní?
sobes.tech AI
Odpoveď od AI
Interceptor (prekidač) je vzor programiranja koji omogućuje presretanje poziva metodov ali obrade poruka za dodavanje dodatne logike bez izmene glavnog koda.
U C#-u, interceptor se često koristi u kontekstu aspektno-orijentisanog programiranja (AOP) ili pri radu sa proxy objektima. Na primer, može se presretati pozive metoda za logovanje, proveru prava pristupa, keširanje ili obradu izuzetaka.
Primer korišćenja interceptora sa Castle DynamicProxy:
public class LoggingInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine($"Poziv metode {invocation.Method.Name} je započeo");
invocation.Proceed(); // poziv originalne metode
Console.WriteLine($"Kraj poziva metode {invocation.Method.Name}");
}
}
// Kreiranje proxy-ja sa interceptorom
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());
myService.SomeMethod();
Na ovaj način, interceptor omogućava umetanje dodatnog ponašanja oko poziva metoda bez promene njihove implementacije.