Junior — Middle
Kas saaksite selgitada, mida tähendab interceptor kontseptsioon programmeerimises?
sobes.tech AI
Vastus AI-lt
Interceptor (vaheka) on programmeerimismuster, mis võimaldab vahele võtta meetodite kutsed või sõnumite töötlemise, lisades täiendavat loogikat ilma põhikoodi muutmata.
C#-s kasutatakse vahekaid sageli aspektipõhise programmeerimise (AOP) kontekstis või töötades proxy-objektidega. Näiteks saab vahele võtta meetodite kutsed logimiseks, õiguste kontrollimiseks, vahemälu kasutamiseks või erandite käsitlemiseks.
Näide Castle DynamicProxy-ga vaheka kasutamisest:
public class LoggingInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine($"{invocation.Method.Name} meetodi kutsumine algas");
invocation.Proceed(); // algse meetodi kutsumine
Console.WriteLine($"{invocation.Method.Name} meetodi kutsumine lõppes");
}
}
// Proxy ja vaheka loomine
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());
myService.SomeMethod();
Seega võimaldab vaheka lisada täiendavat käitumist meetodite kutsumise ümber, muutmata nende teostust.