Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, co oznacza pojęcie interceptor w programowaniu?

sobes.tech AI

Odpowiedź od AI

Interceptor (przechwytywacz) to wzorzec programistyczny, który pozwala na przechwytywanie wywołań metod lub obsługi wiadomości w celu dodania dodatkowej logiki bez zmiany głównego kodu.

W C# interceptor jest często używany w kontekście programowania aspektowego (AOP) lub podczas pracy z obiektami proxy. Na przykład, można przechwytywać wywołania metod w celu logowania, sprawdzania uprawnień, buforowania lub obsługi wyjątków.

Przykład użycia interceptora z Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Rozpoczęto wywołanie metody {invocation.Method.Name}");
        invocation.Proceed(); // wywołanie oryginalnej metody
        Console.WriteLine($"Zakończono wywołanie metody {invocation.Method.Name}");
    }
}

// Tworzenie proxy z interceptorem
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

W ten sposób interceptor pozwala na dodanie dodatkowego zachowania wokół wywołań metod bez zmiany ich implementacji.