Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ დეკორატორის ნიმუშის კონცეფცია და გამოყენება ობიექტზე ორიენტირებულ პროგრამირებაში?

sobes.tech AI

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

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

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

interface სასმელი {
    double ღირებულება();
}

class ყავა implements სასმელი {
    public double ღირებულება() { return 5.0; }
}

class დეკორატორირძით implements სასმელი {
    private სასმელი სასმელი;
    public დეკორატორირძით(სასმელი სასმელი) { this.სასმელი = სასმელი; }
    public double ღირებულება() { return სასმელი.ღირებულება() + 1.0; }
}

// გამოყენება
სასმელი ყავა = new ყავა();
სასმელი ყავარძით = new დეკორატორირძით(ყავა);
System.out.println(ყავარძით.ღირებულება()); // 6.0

ასე, შეგიძლიათ მოქნილი კომბინირება ფუნქციონალობის, ბევრი სუბკლასის შექმნის გარეშე.