Junior — Middle
Kas saaksite selgitada adapteri ja dekoratiivmustri vahelisi erinevusi tarkvaraarenduse kontekstis?
sobes.tech AI
Vastus AI-lt
Adapteri ja Dekoratīvi modeļi bieži sajaucas, bet tiem ir dažādi mērķi un pielietošanas veidi:
-
Adapteris (Adapter) – kalpo, lai pārveidotu viena klases saskarni tādā saskarnē, kādu sagaida klients. To izmanto, kad nepieciešams padarīt nesaderīgas saskarnes darbībā kopā. Adapteris ietver objektu un pārvērš klienta izsaukumus par adaptējama objekta izsaukumiem.
-
Decorator (Dekorators) – paredzēts, lai dinamiski pievienotu jaunas atbildības objektam bez tā saskarnes maiņas. Dekorators ietver objektu un paplašina vai maina tā uzvedību.
Galvenās atšķirības:
- Adapteris maina objekta saskarni, lai tas būtu saderīgs ar klientu.
- Decorator saglabā objekta saskarni, bet pievieno jaunu uzvedību.
Piemērs Java:
// Adapteris: pielāgojam saskarni
interface Target {
void request();
}
class Adaptee {
void specificRequest() {
System.out.println("Specifiska pieprasījuma");
}
}
class Adapter implements Target {
private Adaptee adaptee;
Adapter(Adaptee a) { this.adaptee = a; }
public void request() {
adaptee.specificRequest();
}
}
// Decorator: pievienojam uzvedību
interface Component {
void operation();
}
class ConcreteComponent implements Component {
public void operation() {
System.out.println("Galvenā operācija");
}
}
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("Papildu uzvedība");
}
}