Sobes.tech
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.