Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Didėjant į paslaugas orientuotai architektūrai (SOA), vis daugiau organizacijų savo įmonės sistemoms naudoja trečiųjų šalių paslaugas. Šios įmonės turi neatsilikti nuo sparčiai kintančios verslo aplinkos, o tai gali reikšti vieno paslaugų teikėjo paslaugų atsisakymą kitam.

Tokiais atvejais esama verslo architektūra gali būti nesuderinama su naujo teikėjo architektūra. Užuot švaistęs mėnesius perrašydamas įmonės kodą, kad jis būtų suderinamas su nauja programine įranga, įmonė gali naudoti adapterio dizaino modelį.

Kas yra adapterio dizaino modelis?

Adapterio modelis leidžia klasėms, turinčioms nesuderinamų sąsajų, dirbti kartu. Tai daroma konvertuojant esamos klasės (arba programinės įrangos) sąsają į tokią, kurios klientas (arba paslauga) tikisi. Yra dviejų tipų adapteriai: objektų adapteriai ir klasės adapteriai.

Objekto adapteris naudoja kompoziciją, kad apvyniotų adaptuotoją su adapteriu, efektyviai sukurdamas sąsają, kurios klientas tikisi. Taigi, jei klientas tikisi eilutės, adapteris paims sveikąjį skaičių (adaptuotoją) ir suteiks jam eilutės charakteristikas.

instagram viewer

Aukščiau pateikta klasių diagrama vaizduoja objekto adapterį. The adapterio klasė įgyvendina tikslinė sąsaja, efektyviai įgydami prieigą prie visų sąsajos metodų. Tada jis prisitaiko prie prisitaikėlis ir apgaubia tai prisitaikėlis su tikslinė sąsaja metodus.

Klasės adapteris naudoja daugialypį paveldėjimą, kur adapterio klasė yra ir adaptuotojo, ir tikslinės klasės poklasis. Toliau pateiktoje klasių diagramoje pavaizduotas klasės adapteris, kurį galite laisvai naudoti programavimo kalbose, kurios palaiko daugialypį paveldėjimą.

Adapterio dizaino modelio įdiegimas Java

Ši programa įdiegs objekto adapterį. Ši programa imituos finansinę organizaciją, pereinančią nuo mokėjimo kortelių naudojimo ir apdorojimo prie kredito kortelių. Ši organizacija iš pradžių naudojo šią mokėjimo kortelės sąsają:

viešassąsajaChargeCard{
viešastuštumamėnesinis balansas();
viešastuštumaVėlavimo mokestis();
viešastuštumaMetinis mokestis();
}

Populiarus apmokestinimo kortelių tipas, kurį apdoroja šios organizacijos sistema, yra slyvų kortelė:

viešasklasėSlyvų kortelėpadargaiChargeCard{
privatustarpt kortelės Nr;
privatus String customerName;
privatusdvigubai balansas;

// pirminis konstruktorius
viešasSlyvų kortelė(tarpt cardNo, String customerName, dvigubai balansas){
tai.cardNo = kortelės Nr;
tai.customerName = klientoVardas;
tai.balansas = balansas;
}

// geteriai ir seteriai
viešastarptgauti kortelės Nr(){
grąžinti kortelės Nr;
}

viešastuštumasetCardNr(tarpt kortelės Nr){
tai.cardNo = kortelės Nr;
}

viešas Styga getCustomerName(){
grąžinti Kliento vardas;
}

viešastuštumasetCustomerName(Eilutė customerName){
tai.customerName = klientoVardas;
}

viešasdvigubaigautiBalance(){
grąžinti balansas;
}

viešastuštumasetBalance(dvigubai balansas){
tai.balansas = balansas;
}

@Nepaisyti
viešastuštumamėnesinis balansas(){
System.out.println("Sausį " + tai.customerName + "išleido" + tai.balansas);
}

@Nepaisyti
viešastuštumaVėlavimo mokestis(){
System.out.println(tai.customerName + "mėnesinis vėlavimo mokestis yra 80,00 USD");
}

@Nepaisyti
viešastuštumaMetinis mokestis(){
System.out.println(tai.customerName + "metinis mokestis yra 200,00 USD");
}
}

Ši finansų įstaiga pereina prie kredito kortelių ir palaipsniui atsisako mokėjimo kortelių, todėl kai kurie jų klientai dabar turi kredito korteles:

viešassąsajaKreditinė kortelė{
viešastuštumamėnesinis minimalus mokėjimas();
viešastuštumapalūkanų();
viešastuštumaMetinis mokestis();
}

Finansų įstaigų įmonių sistema dabar apdoroja tik kredito korteles, nes ateinančiais metais ketina nebenaudoti apmokestinimo kortelių. Tačiau dauguma jų klientų vis dar naudoja mokėjimo korteles. Taigi, inžinieriai nusprendė, kad geriausia įdiegti adapterį, kol visi jų klientai nepereis prie kredito kortelės.

viešasklasėChargeCardAdapterpadargaiKreditinė kortelė{
ChargeCard chargeCard;

viešasChargeCardAdapter(ChargeCard chargeCard){
tai.chargeCard = chargeCard;
}

@Nepaisyti
viešastuštumamėnesinis minimalus mokėjimas(){
tai.chargeCard.monthlyBalance();
}

@Nepaisyti
viešastuštumapalūkanų(){
tai.chargeCard.lateFee();
}

@Nepaisyti
viešastuštumaMetinis mokestis(){
tai.chargeCard. Metinis mokestis();
}
}

Šis ChargeCardAdapter Java klasė diegia Kreditinę kortelę Java sąsaja. Jis pritaiko „ChargeCard“ (pritaikytoją), suteikdamas jai kredito kortelės savybes. Pavyzdžiui, sistema apdoros kredito kortelės palūkanų mokestį, kuris yra mokėjimo kortelės kliento, kuris dar neįvykdė konvertavimo, vėlavimo mokestis.

Adapterio modelio naudojimo pranašumai

Pagrindinis adapterio modelio naudojimo pranašumas yra tas, kad jis leidžia klientams naudotis naujomis paslaugomis, bibliotekomis ir funkcijomis nekeičiant kodo. Tai skatina programos mastelį.

Kitas privalumas yra tai, kad šis modelis taip pat yra lankstus. Adapterio šablonas pateikia du įgyvendinimo būdus: objektų adapterius ir klasės adapterius.