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.