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