Junior — Middle
Можете ли објаснити шта подразумева концепт интерцептора у програмирању?
sobes.tech АИ
Одговор од АИ
Interceptor (prekidač) je obrazac programiranja koji omogućava presretanje poziva metoda ili obrade poruka radi dodavanja 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 pozivi 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($"Poziv metode {invocation.Method.Name} je završen");
}
}
// 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.