Junior — Middle
შეგიძლიათ ახსნათ Adapter და Decorator ნიმუშების განსხვავებები პროგრამული უზრუნველყოფის დიზაინის კონტექსტში?
sobes.tech AI
პასუხი AI-სგან
საბავშვო ნიმუშები Adapter და Decorator ხშირად იშლება, მაგრამ მათ სხვადასხვა მიზნები და გამოყენების მეთოდები აქვთ:
-
Adapter (მორგებელი) — ემსახურება კლასის ინტერფეისის გარდაქმნას იმ ინტერფეისად, რომელიც მომხმარებელი ელოდება. გამოიყენება, როდესაც საჭიროა შეუთავსებელი ინტერფეისების ერთობლივი მუშაობა. მორგებელი ხვდება ობიექტს და თარგმნის მომხმარებლის ზარებს მორგებულ ობიექტზე.
-
Decorator (დეკორატორი) — განკუთვნილია დინამიურად ახალი პასუხისმგებლობების დამატებისთვის ობიექტს მისი ინტერფეისის შეცვლის გარეშე. დეკორატორი ხვდება ობიექტს და აფართოებს ან იცვლის მის ქცევას.
ძირითადი განსხვავებები:
- მორგებელი იცვლის ობიექტის ინტერფეისს, რათა ის იყოს თავსებადი მომხმარებელთან.
- დეკორატორი ინარჩუნებს ობიექტის ინტერფეისს, მაგრამ დამატებით ახალ ქცევას აძლევს.
Java-ს მაგალითი:
// მორგებელი: ინტერფეისის ადაპტაცია
interface Target {
void request();
}
class Adaptee {
void specificRequest() {
System.out.println("სპეციფიკური მოთხოვნა");
}
}
class Adapter implements Target {
private Adaptee adaptee;
Adapter(Adaptee a) { this.adaptee = a; }
public void request() {
adaptee.specificRequest();
}
}
// დეკორატორი: ქცევის დამატება
interface Component {
void operation();
}
class ConcreteComponent implements Component {
public void operation() {
System.out.println("ძირითადი ოპერაცია");
}
}
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("დამატებითი ქცევა");
}
}