Junior — Middle
Vai jūs varat izskaidrot, kas ir dekoratora modelis un kāds ir tā galvenais nozīme?
sobes.tech AI
Atbilde no AI
«Dekoratora» paraugs ļauj dinamiski pievienot jaunas atbildības objektiem, tos ietverot citos dekoratora objektos, nemainot oriģinālo klasi.
Galvenā ideja ir izveidot apvalku ap objektu, kas īsteno to pašu saskarni un var veikt papildu loģiku pirms vai pēc oriģinālā objekta metožu izsaukšanas.
Tas ir noderīgi, ja vēlaties paplašināt funkcionalitāti bez mantošanas un esošā koda maiņas.
Piemērs pseudokodā:
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; }
}
// Lietošana:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7
Šādā veidā dekorators ļauj elastīgi pievienot funkcionalitāti objektiem izpildes laikā.