Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

S nárastom architektúry orientovanej na služby (SOA) stále viac organizácií využíva služby tretích strán pre svoje podnikové systémy. Tieto spoločnosti musia držať krok s rýchlo sa meniacim podnikateľským prostredím, čo môže znamenať opustenie služieb jedného poskytovateľa služieb pre druhého.

V takýchto prípadoch môže byť existujúca architektúra podniku nekompatibilná s architektúrou nového poskytovateľa. Namiesto plytvania mesiacov prepisovaním podnikového kódu, aby bol kompatibilný s novým softvérom, môže podnik použiť návrhový vzor adaptéra.

Aký je návrhový vzor adaptéra?

Vzor adaptéra umožňuje triedam, ktoré majú nekompatibilné rozhrania, aby spolupracovali. Robí to konverziou rozhrania existujúcej triedy (alebo softvéru) na rozhranie, ktoré klient (alebo služba) očakáva. Existujú dva typy adaptérov: objektové adaptéry a adaptéry triedy.

Objektový adaptér používa kompozíciu na zabalenie adaptéra s adaptérom, čím efektívne vytvára rozhranie, ktoré klient očakáva. Takže, ak klient očakáva reťazec, adaptér zoberie celé číslo (prispôsobený) a dá mu vlastnosti reťazca.

instagram viewer

Vyššie uvedený diagram tried predstavuje objektový adaptér. The trieda adaptéra implementuje cieľové rozhranie, efektívne získať prístup ku všetkým metódam rozhrania. Potom sa prispôsobí adaptant a zabalí to adaptant s cieľové rozhranie metódy.

Adaptér triedy používa viacnásobnú dedičnosť, kde trieda adaptéra je podtriedou adaptovaného aj cieľovej triedy. Nižšie uvedený diagram triedy predstavuje adaptér triedy, ktorý môžete voľne používať v programovacích jazykoch, ktoré podporujú viacnásobnú dedičnosť.

Implementácia vzoru návrhu adaptéra v jazyku Java

Táto aplikácia bude implementovať objektový adaptér. Táto vzorová aplikácia bude simulovať finančnú organizáciu, ktorá prechádza z používania a spracovania platobných kariet na kreditné karty. Táto organizácia pôvodne používala nasledujúce rozhranie platobnej karty:

verejnostirozhranieChargeCard{
verejnostineplatnémesačný zostatok();
verejnostineplatnélateFee();
verejnostineplatnéRočný poplatok();
}

Populárnym typom platobnej karty, ktorú systém tejto organizácie spracováva, je slivková karta:

verejnostitriedaPlumCardnáradiaChargeCard{
súkromnéint karta č;
súkromné Reťazec customerName;
súkromnédvojitý rovnováha;

// primárny konštruktor
verejnostiPlumCard(int cardNo, String customerName, dvojitý zostatok){
toto.cardNo = cardNo;
toto.customerName = customerName;
toto.balans = rovnováha;
}

// getters a setters
verejnostiintgetCardNo(){
vrátiť karta č;
}

verejnostineplatnésetCardNo(int karta č){
toto.cardNo = cardNo;
}

verejnosti Reťazec getCustomerName(){
vrátiť Meno zákazníka;
}

verejnostineplatnésetCustomerName(reťazec customerName){
toto.customerName = customerName;
}

verejnostidvojitýgetBalance(){
vrátiť rovnováha;
}

verejnostineplatnésetBalance(dvojitý zostatok){
toto.balans = rovnováha;
}

@Prepísať
verejnostineplatnémesačný zostatok(){
System.out.println("V januári " + toto.customerName + "strávil" + toto.zostatok);
}

@Prepísať
verejnostineplatnélateFee(){
System.out.println(toto.customerName + "mesačný poplatok z omeškania je 80,00 $");
}

@Prepísať
verejnostineplatnéRočný poplatok(){
System.out.println(toto.customerName + "ročný poplatok je 200,00 $");
}
}

Táto finančná inštitúcia prechádza na kreditné karty a postupne vyraďuje platobné karty, takže niektorí z ich zákazníkov teraz majú kreditné karty:

verejnostirozhranieKreditná karta{
verejnostineplatnémesačnáMinPayment();
verejnostineplatnézáujem();
verejnostineplatnéRočný poplatok();
}

Podnikový systém finančných inštitúcií v súčasnosti spracováva iba kreditné karty, pretože sa v nadchádzajúcom roku chystá prestať používať platobné karty. Väčšina ich zákazníkov však stále používa nabíjacie karty. Inžinieri sa teda rozhodli, že bude najlepšie implementovať adaptér, kým všetci ich zákazníci neprejdú na kreditnú kartu.

verejnostitriedaChargeCardAdapternáradiaKreditná karta{
ChargeCard chargeCard;

verejnostiChargeCardAdapter(ChargeCard ChargeCard){
toto.chargeCard = chargeCard;
}

@Prepísať
verejnostineplatnémesačnáMinPayment(){
toto.chargeCard.monthlyBalance();
}

@Prepísať
verejnostineplatnézáujem(){
toto.chargeCard.lateFee();
}

@Prepísať
verejnostineplatnéRočný poplatok(){
toto.chargeCard. Ročný poplatok();
}
}

Tento adaptér ChargeCard triedy Java implementuje kreditnú kartu Java rozhranie. Prispôsobuje ChargeCard (prispôsobený) a dáva jej vlastnosti kreditnej karty. Systém napríklad spracuje úrokový poplatok za kreditnú kartu, čo je poplatok z omeškania u zákazníka s kreditnou kartou, ktorý ešte nekonvertoval.

Výhody použitia vzoru adaptéra

Hlavnou výhodou použitia vzoru adaptéra je, že umožňuje klientom používať nové služby, knižnice a funkcie bez zmeny ich kódu. To podporuje škálovateľnosť aplikácií.

Ďalšou výhodou je, že tento vzor je zároveň flexibilný. Vzor adaptéra poskytuje dve metódy implementácie: objektové adaptéry a adaptéry tried.