Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot Dekoratora modeļa koncepciju un piemērošanu objektorientētajā programmēšanā?

sobes.tech AI

Atbilde no AI

Dekoratora modeļs ļauj dinamiski pievienot jaunas atbildības objektiem, ietverot tos citos dekoratora objektos, nemainot klases avota kodu. Tas ir īpaši noderīgi, ja nepieciešams paplašināt funkcionalitāti bez mantošanas.

Piemērs: ir pamata saskarne Dzēriens ar metodi cena(). Jūs varat izveidot klasi Kafija, un pēc tam dekoratorus ArPienu, ArCukuru, kas pievieno cenu un maina uzvedību.

interface Dzēriens {
    double cena();
}

class Kafija implements Dzēriens {
    public double cena() { return 5.0; }
}

class DekoratorsArPienu implements Dzēriens {
    private Dzēriens dzēriens;
    public DekoratorsArPienu(Dzēriens dzēriens) { this.dzēriens = dzēriens; }
    public double cena() { return dzēriens.cena() + 1.0; }
}

// Lietošana
Dzēriens kafija = new Kafija();
Dzēriens arPienu = new DekoratorsArPienu(kafija);
System.out.println(arPienu.cena()); // 6.0

Šādā veidā var elastīgi kombinēt funkcionalitāti, neizveidojot daudz apakšklases.