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");
}
}