Adaptér - UML diagram
Adaptér - UML diagram

Návrhový vzor adapter (Wrapper) slouží pro definici jiného (stabilního) rozhraní, než daná třída poskytuje.

Příkladem z reálného života je adaptér do zásuvek. Pojedete-li do jiné země, tak tam velmi pravděpodobně narazíte na zásuvky, které mají jiný tvar a jiné napětí. Z tohoto důvodu je zapotřebí vložit mezi zařízení a zásuvku adaptér, který zajistí jak vhodné napětí, tak samotnou možnost zapojení (kvůli tvaru zásuvky).

Obdobně funguje návrhový adaptér. Máme nějakou třídu, jejíž rozhraní je z nějakého důvodu nevyhovující. Proto vytvoříme třídu adaptér, implementující požadované rozhraní, která bude dané volání překládat a volat adaptovanou třídu. Druhým častým důvodem použití adaptéru je nestabilita rozhraní adaptované třídy, například když tuto adaptovanou třídu (modul) vyvíjí jiná společnost. Potom je vhodné vytvořit adaptér, který se při změně rozhraní jednoduše upraví (v opačném případě by bylo nutné přepisovat všechna použití dané nestabilní třídy).


Příklad

Mějme v naší aplikaci z historických důvodů třídu, která počítá obsah obdélníku v imperiálních jednotkách. Protože soustava SI obsahuje metrické jednotky, tak chceme tuto třídu adaptovat tak, aby počítala obsah v metrických jednotkách. Použijeme vzor adapter.

Kód

/**
 * Demostrace vzoru adapter
 * @author Pavel Micka
 */
public class AdapterDemonstration {
    public static void main(String[] args){
        RequiredInterface metric = new MetricAreaMeter();
        System.out.println(metric.metricArea(2, 2));
    }
}
/**
 * Pozadovane rozhrani
 * @author Pavel Micka
 */
interface RequiredInterface{
    /**
     * Spocita velikost plochy obdelniku v metrickych jednotkach
     * @param lengthA velikost strany A v centimetrech
     * @param lengthB velikost strany B v centimetrech
     * @return plocha obdelniku v ctverecnich centimetrech
     */
    public double metricArea(double lengthA, double lengthB);
}
/**
 * Adaptovane rozhrani
 * @author Pavel Micka
 */
interface AdapteeInterface{
    /**
     * Spocita velikost plochy obdelniku v imperialnich jednotkach
     * @param lengthA velikost strany A v palcich
     * @param lengthB velikost strany B v palcich
     * @return plocha obdelniku v ctverecnich palcich
     */
    public double imperalArea(double lengthA, double lengthB);
}
/**
 * Adapter
 * @author Pavel Micka
 */
class MetricAreaMeter implements RequiredInterface{
    private AdapteeInterface adaptee;
    public MetricAreaMeter() {
        this.adaptee = new ImperialAreaMeter();
    }

    public double metricArea(double lengthA, double lengthB) {
        return adaptee.imperalArea(lengthA / 2.54, lengthB / 2.54)*2.54*2.54;
    }
}
/**
 * Adaptovana trida
 * @author Pavel Micka
 */
class ImperialAreaMeter implements AdapteeInterface{
    public double imperalArea(double lengthA, double lengthB) {
        return lengthA*lengthB;
    }
}

SEO od společnosti Digital Pylon


Online casino s algoritmem

České casino online online slot-vegas.cz

Hrajte nejlepší hry jako je GoodGame Empire.





Zajímavé články: Jak najít práci snů? Zvolte kariéru v IT!, Češi mají rádi hrací automaty online, Jak funguje algoritmické obchodování Casino, Online výuka Algoritmus a online marketing mají svá pravidla, Automaty, Matematický vliv, Ratings, Jak fungují algoritmy hazardních her online: více znalostí, více peněz, SYPWAI - nástroj pro vědecký vývoj, Vynikají na globálním trhu: Nejlepší vývojáři softwaru pro online výherní automaty, Jak si vybrat nejlepší české online casino, Proč byste měli hrát online casino VPN revoluce, Kde najdeme algoritmy v každodenním životě?, Čeká vás pracovní pohovor mimo město? Podívejte se, jak dokonale zvládnout včasný příchod, 5 úžasných technologií ze světa hazardních her, Mirror and access to Mostbet, Svou kancelář můžete mít stále po ruce, Jaké výhody má digitalizovaná firma oproti off-line konkurenci?, Jaký systém vybrat pro snadné řízení výroby?, Nahradí umělá inteligence ajťáky?, Důvody, proč používat SnapTik ke stahování videí TikTok, Dokonalý den na pláži: Co si vzít s sebou, aby byl výlet zábavný a bezpečný?, Jak přežít dlouhý let?, Go pay GoodGame Empire, Blockchain, Rozhovor