Sobes.tech
Junior — Middle

Obyektga yo'naltirilgan dasturlashda Dekorator naqshining konsepti va qo'llanilishini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Dekorator naqshoni ob'ektlarga dinamik tarzda yangi mas'uliyatlarni qo'shish imkonini beradi, ularni boshqa dekorator ob'ektlariga o'rab, sinfning manba kodini o'zgartirmasdan. Bu, ayniqsa, meros olishsiz funksionallikni kengaytirish kerak bo'lsa, foydalidir.

Misol uchun, asosiy Ichimlik interfeysi va narxi() metodi mavjud. Siz Kofe sinfini yaratishingiz mumkin, so'ngra Sutli, Shakarli dekoratorlarini qo'shib, narxni oshirishingiz va xulq-atvorini o'zgartirishingiz mumkin.

interface Ichimlik {
    double narx();
}

class Kofe implements Ichimlik {
    public double narx() { return 5.0; }
}

class SutDekoratori implements Ichimlik {
    private Ichimlik ichimlik;
    public SutDekoratori(Ichimlik ichimlik) { this.ichimlik = ichimlik; }
    public double narx() { return ichimlik.narx() + 1.0; }
}

// Foydalanish
Ichimlik kofe = new Kofe();
Ichimlik sutliKofe = new SutDekoratori(kofe);
System.out.println(sutliKofe.narx()); // 6.0

Shu tarzda, funksionallikni moslashuvchan tarzda birlashtirish mumkin, ko'p sonli subklasslar yaratmasdan.