Vzor adaptéra v Jave

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na vzor adaptéra a jeho implementáciu v jazyku Java.

2. Vzor adaptéra

Vzor adaptéra slúži ako konektor medzi dvoma nekompatibilnými rozhraniami, ktoré sa inak nedajú priamo pripojiť. Adaptér zabalí existujúcu triedu do nového rozhrania, aby sa stala kompatibilnou s rozhraním klienta.

Hlavným motívom použitia tohto vzoru je prevod existujúceho rozhrania na iné rozhranie, ktoré klient očakáva. Spravidla sa implementuje po vytvorení aplikácie.

2.1. Príklad vzoru adaptéra

Zvážte scenár, v ktorom existuje aplikácia vyvinutá v USA, ktorá vracia najvyššiu rýchlosť luxusných automobilov v míľach za hodinu (MPH). Teraz musíme pre nášho klienta vo Veľkej Británii použiť rovnakú aplikáciu, ktorá chce rovnaké výsledky, ale v kilometroch za hodinu (km / h).

Na riešenie tohto problému vytvoríme adaptér, ktorý prevedie hodnoty a poskytne požadované výsledky:

Najskôr vytvoríme pôvodné rozhranie Pohyblivé ktorá má vrátiť rýchlosť niektorých luxusných automobilov v míľach za hodinu:

verejné rozhranie Movable {// vracia rýchlosť v MPH double getSpeed ​​(); }

Teraz vytvoríme jednu konkrétnu implementáciu tohto rozhrania:

verejná trieda BugattiVeyron implementuje Movable {@Override public double getSpeed ​​() {return 268; }}

Teraz vytvoríme rozhranie adaptéra MovableAdapter to bude vychádzať z toho istého Pohyblivé trieda. Môže byť mierne upravený, aby priniesol rôzne výsledky v rôznych scenároch:

verejné rozhranie MovableAdapter {// vracia rýchlosť v KM / H dvojnásobok getSpeed ​​(); } 

Implementácia tohto rozhrania bude pozostávať zo súkromnej metódy convertMPHtoKMPH () ktoré sa použijú na prevod:

verejná trieda MovableAdapterImpl implementuje MovableAdapter {private Movable luxuryCars; // štandardné konštruktory @Override verejné dvojité getSpeed ​​() {návrat convertMPHtoKMPH (luxuryCars.getSpeed ​​()); } súkromné ​​zdvojnásobenie convertMPHtoKMPH (zdvojnásobenie mph) {návratová rýchlosť mph * 1,60934; }}

Teraz použijeme iba metódy definované v našom adaptéri a získame prevedené rýchlosti. V takom prípade bude platiť nasledujúce tvrdenie:

@Test public void whenConvertingMPHToKMPH_thenSuccessfullyConverted () {Movable bugattiVeyron = new BugattiVeyron (); MovableAdapter bugattiVeyronAdapter = nový MovableAdapterImpl (bugattiVeyron); assertEquals (bugattiVeyronAdapter.getSpeed ​​(), 431,30312, 0,00001); }

Ako si tu môžeme všimnúť, náš adaptér sa prevádza 268 míľ / h do 431 km / h pre tento konkrétny prípad.

2.2. Kedy použiť vzor adaptéra

  • Keď vonkajší komponent poskytuje podmanivú funkčnosť, ktorú by sme chceli znova použiť, ale je nekompatibilný s našou súčasnou aplikáciou. Môže byť vyvinutý vhodný adaptér, aby boli navzájom kompatibilné
  • Keď naša aplikácia nie je kompatibilná s rozhraním, ktoré náš klient očakáva
  • Keď chceme v našej aplikácii znova použiť pôvodný kód bez akejkoľvek úpravy pôvodného kódu

3. Záver

V tomto článku sme sa pozreli na návrhový vzor adaptéra v Jave.

Celý zdrojový kód pre tento príklad je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found