Sobes.tech
Junior — Middle

Ar galite paaiškinti, kas yra dekoratoriaus modelis ir koks yra jo pagrindinis prasmė?

sobes.tech AI

Atsakymas iš AI

«Dekoratoriaus» šablonas leidžia dinamiškai pridėti naujų atsakomybių objektams, juos apvyniojant kitais dekoratoriaus objektais, nekeičiant originalios klasės.

Pagrindinė idėja yra sukurti apvalkalą aplink objektą, kuris įgyvendina tą patį sąsają ir gali vykdyti papildomą logiką prieš arba po originalaus objekto metodų iškvietimo.

Tai naudinga, kai norima išplėsti funkcionalumą be paveldėjimo ir esamo kodo keitimo.

Pavyzdys pseudokode:

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; }
}

// Naudojimas:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

Šiuo būdu dekoratorius leidžia lankstiai pridėti funkcionalumą objektams vykdymo metu.