Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ է ենթադրում interceptor կոնցեպտը ծրագրավորման մեջ?

sobes.tech AI

Պատասխան AI-ից

Ինտերպետոր (միջնորդ) — ծրագրավորման նմուշ է, որը թույլ է տալիս միջնորդել մեթոդների կանչերը կամ հաղորդագրությունների մշակումը՝ ավելացնելով լրացուցիչ տրամաբանություն առանց հիմնական կոդը փոխելու:

C#-ում, ինտերպետորը հաճախ օգտագործվում է կողմնորոշված կողմնորոշման ծրագրավորման (AOP) կոնտեքստում կամ պրոքսի օբյեկտների հետ աշխատելիս: Օրինակ, կարող եք միջնորդել մեթոդների կանչերը՝ գրանցման, մուտքի իրավունքների ստուգման, կեշավորման կամ արտահայտությունների մշակման համար:

Castle DynamicProxy-ով ինտերպետոր օգտագործելու օրինակ:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"{invocation.Method.Name} մեթոդի կանչումը սկսվեց");
        invocation.Proceed(); // սկզբնական մեթոդի կանչը
        Console.WriteLine($"{invocation.Method.Name} մեթոդի կանչումը ավարտվեց");
    }
}

// պրոքսի և ինտերպետոր ստեղծում
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Այսպիսով, ինտերպետորը թույլ է տալիս ավելացնել լրացուցիչ վարքագիծ մեթոդների կանչերի շուրջ՝ առանց նրանց իրականացմանը փոխելու։