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