Sobes.tech
Junior — Middle

Dasturlash dizaynida Adapter va Decorator shablonlari o'rtasidagi farqlarni tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Adapter va Decorator naqshlari ko'pincha aralashtiriladi, ammo ular turli maqsadlar va qo'llash usullariga ega:

  • Adapter (Moslashtiruvchi) — bir sinfning interfeysini mijoz kutayotgan interfeysga aylantirish uchun xizmat qiladi. U mos kelmaydigan interfeyslar birga ishlashini ta'minlash uchun ishlatiladi. Adapter ob'ektni o'z ichiga oladi va mijozning chaqiriqlarini moslashtirilgan ob'ekt chaqiriqlariga tarjima qiladi.

  • Decorator (Dekorator) — ob'ektga dinamik ravishda yangi mas'uliyatlar qo'shish uchun mo'ljallangan. Dekorator ob'ektni o'z ichiga oladi va uning xulq-atvorini kengaytiradi yoki o'zgartiradi.

Asosiy farqlar:

  • Adapter ob'ektning interfeysini o'zgartiradi, shunda u mijoz bilan mos keladi.
  • Decorator ob'ektning interfeysini saqlaydi, ammo yangi xulq-atvor qo'shadi.

Java misoli:

// Adapter: interfeysni moslashtirish
interface Target {
    void request();
}

class Adaptee {
    void specificRequest() {
        System.out.println("Maxsus so'rov");
    }
}

class Adapter implements Target {
    private Adaptee adaptee;
    Adapter(Adaptee a) { this.adaptee = a; }
    public void request() {
        adaptee.specificRequest();
    }
}

// Decorator: xulq-atvor qo'shish
interface Component {
    void operation();
}

class ConcreteComponent implements Component {
    public void operation() {
        System.out.println("Asosiy operatsiya");
    }
}

class Decorator implements Component {
    protected Component component;
    Decorator(Component c) { this.component = c; }
    public void operation() {
        component.operation();
    }
}

class ConcreteDecorator extends Decorator {
    ConcreteDecorator(Component c) { super(c); }
    public void operation() {
        super.operation();
        System.out.println("Qo'shimcha xulq-atvor");
    }
}