Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ, რა არის დეკორატორ მოდელი და რა არის მისი ძირითადი მნიშვნელობა?

sobes.tech AI

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

«დეკორატორი» ნიმუში საშუალებას აძლევს დინამიურად დაამატოთ ახალი პასუხისმგებლობები ობიექტებს, მათ სხვა დეკორატორული ობიექტებით შემოსაზღვრის გზით, არ შეცვალოთ საწყისი კლასი.

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

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

პსევდოკოდის მაგალითი:

interface Coffee {
    double cost();
}

class SimpleCoffee implements Coffee {
    public double cost() { return 5; }
}

class MilkDecorator implements Coffee {
    private Coffee coffee;
    public MilkDecorator(Coffee coffee) { this.coffee = coffee; }
    public double cost() { return coffee.cost() + 2; }
}

// გამოყენება:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

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