Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι εννοείται με την έννοια του interceptor στον προγραμματισμό;

sobes.tech AI

Απάντηση από AI

Ο αποκλεισμός (interceptor) είναι ένα μοτίβο προγραμματισμού που επιτρέπει την παρεμβολή στις κλήσεις μεθόδων ή την επεξεργασία μηνυμάτων για την προσθήκη επιπλέον λογικής χωρίς την αλλαγή του βασικού κώδικα.

Στη C#, ο αποκλεισμός χρησιμοποιείται συχνά στο πλαίσιο του προγραμματισμού με προσεγγίσεις διαστάσεων (AOP) ή κατά την εργασία με αντικείμενα proxy. Για παράδειγμα, μπορεί να παρεμβαίνει στις κλήσεις μεθόδων για καταγραφή, έλεγχο δικαιωμάτων, caching ή διαχείριση εξαιρέσεων.

Παράδειγμα χρήσης αποκλεισμού με Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Η κλήση της μεθόδου {invocation.Method.Name} ξεκίνησε");
        invocation.Proceed(); // κλήση της αρχικής μεθόδου
        Console.WriteLine($"Η κλήση της μεθόδου {invocation.Method.Name} ολοκληρώθηκε");
    }
}

// Δημιουργία proxy με αποκλεισμό
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Έτσι, ο αποκλεισμός επιτρέπει την εισαγωγή επιπλέον συμπεριφορών γύρω από τις κλήσεις μεθόδων χωρίς να αλλάξει η υλοποίησή τους.