Sobes.tech
Junior — Middle

Obyekt yönümlü proqramlaşdırmada Dekorator nümunəsinin konseptini və tətbiqini izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Dekorator nümunəsi obyektlərə dinamik olaraq yeni vəzifələr əlavə etməyə imkan verir, onları digər dekorator obyektlərinə sarmaqlayaraq, sinfin mənbə kodunu dəyişmədən. Bu, xüsusən irsiyyət olmadan funksionallığı genişləndirmək lazım olduqda faydalıdır.

Misal üçün, əsas İçki interfeysi və qiymət() metodu var. Siz Kofe sinfi yarada və sonra Süd ilə, Şəkər ilə dekoratorları əlavə edə bilərsiniz, bu da qiyməti artırır və davranışı dəyişir.

interface İçki {
    double qiymət();
}

class Kofe implements İçki {
    public double qiymət() { return 5.0; }
}

class SüdDekorator implements İçki {
    private İçki içki;
    public SüdDekorator(İçki içki) { this.içki = içki; }
    public double qiymət() { return içki.qiymət() + 1.0; }
}

// İstifadə
İçki kofe = new Kofe();
İçki kofeSüd ilə = new SüdDekorator(kofe);
System.out.println(kofeSüd ilə.qiymət()); // 6.0

Bu şəkildə, funksionallığı elastik şəkildə birləşdirmək mümkündür, çoxsaylı alt siniflər yaratmadan.