Sobes.tech
Middle

რა არის დეკორატორი პროგრამირების კონტექსტში?

sobes.tech AI

პასუხი AI-სგან

დეკორატორი — ეს დიზაინის ნიმუშია, რომელიც საშუალებას აძლევს დინამიურად დაამატოთ ახალი ქცევა არსებულ ობიექტებს, მათ სპეციალური "შრიფტის ობიექტებით" ჩასმით, მათი სტრუქტურის შეცვლის გარეშე:

ძირითადი პრინციპები:

  • დინამიური ქცევის დამატება: ფუნქციონალობა დამატებულია შესრულების დროს, არა სტატიკურად.
  • მომხმარებლისთვის გამჭვირვალობა: მომხმარებლის კოდი ურთიერთქმედებს დეკორატორთან, როგორც ეს იყო ორიგინალური ობიექტი.
  • სხვაობა: საშუალებას აძლევს სხვადასხვა დეკორატორების კომბინირებას საჭირო ქცევის მისაღწევად.

Python-ის მაგალითი:

def my_decorator(func):
    def wrapper():
        print("ფუნქციის გამოძახებამდე")
        func()
        print("ფუნქციის გამოძახების შემდეგ")
    return wrapper

@my_decorator
def say_hello():
    print("გამარჯობა!")

# ფუნქციის გამოძახება დეკორატორით
say_hello()

JavaScript-ის მაგალითი:

function logCall(target, key, descriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args) {
        console.log(`მეთოდის ${key} გამოძახება არგუმენტებით: ${args}`);
        const result = originalMethod.apply(this, args);
        console.log(`მეთოდი ${key} დაბრუნდა: ${result}`);
        return result;
    };
    return descriptor;
}

class Example {
    @logCall
    add(a, b) {
        return a + b;
    }
}

const instance = new Example();
instance.add(2, 3);

აქ @logCall გამოიყენება add მეთოდის ლოგირების დასამატებლად.

QA ავტომატიზაციის გამოყენება:

  • ლოგირება: ლოგირების დამატება ტესტების ნაბიჯებს ან ელემენტებთან ურთიერთქმედებას.
  • გამონაკლისების დამუშავება: ფუნქციების გამოძახების გარშემორტყმული სპეციალური გამონაკლისების დამუშავებისთვის.
  • სტატუსის მართვა: ობიექტის მდგომარეობის შეცვლა მისი მეთოდების გამოძახებამდე ან შემდეგ (მაგ., კონტექსტების გადართვა).
  • ავტორიზაცია/ავტენტიკაცია: დაშვების უფლებების შემოწმება გარკვეული მოქმედებების შესრულებამდე.