Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Teenusele orienteeritud arhitektuuri (SOA) tõusuga kasutab üha rohkem organisatsioone oma ettevõttesüsteemide jaoks kolmandate osapoolte teenuseid. Need ettevõtted peavad kaasas käima kiiresti muutuva ärikeskkonnaga, mis võib tähendada ühe teenusepakkuja teenustest loobumist teise poole.

Sellistel juhtudel ei pruugi ettevõtte olemasolev arhitektuur uue pakkuja arhitektuuriga ühilduda. Selle asemel, et raisata kuid ettevõtte koodi ümberkirjutamisele, et see uue tarkvaraga ühilduks, võib ettevõte kasutada adapteri kujundusmustrit.

Mis on adapteri kujundusmuster?

Adapteri muster võimaldab ühildumatute liidestega klassidel koos töötada. See teeb seda, teisendades olemasoleva klassi (või tarkvara) liidese selliseks, mida klient (või teenus) ootab. Adaptereid on kahte tüüpi: objektiadapterid ja klassiadapterid.

Objekti adapter kasutab kompositsiooni, et siduda adapteerija adapteriga, luues tõhusa liidese, mida klient ootab. Seega, kui klient ootab stringi, võtab adapter täisarvu (adapteerija) ja annab sellele stringi omadused.

Ülaltoodud klassiskeem kujutab objektiadapterit. The adapteri klass rakendab sihtliides, pääsedes tõhusalt ligi kõigile liidese meetoditele. Seejärel kohandub see an kohaneja ja mähib selle kohaneja koos sihtliides meetodid.

Klassiadapter kasutab mitmikpärimist, kus adapterklass on nii adapteeritava kui ka sihtklassi alamklass. Allolev klassiskeem kujutab klassiadapterit, mida saate vabalt kasutada mitut pärimist toetavates programmeerimiskeeltes.

Adapteri disaini mustri rakendamine Javas

See rakendus rakendab objektiadapterit. See näidisrakendus simuleerib finantsorganisatsiooni üleminekut maksekaartide kasutamiselt ja töötlemiselt krediitkaartidele. See organisatsioon kasutas algselt järgmist maksekaardi liidest:

avalikliidesChargeCard{
avaliktühinekuu saldo();
avaliktühinehilinemistasu();
avaliktühineAastamaks();
}

Populaarne maksekaardi tüüp, mida selle organisatsiooni süsteem töötleb, on ploomikaart:

avalikklassPlumCardrakendabChargeCard{
privaatneint kaardi nr;
privaatne String kliendiNimi;
privaatnekahekordne tasakaal;

// esmane konstruktor
avalikPlumCard(int cardNo, String customerName, kahekordne tasakaal){
see.cardNo = kaardi nr;
see.customerName = kliendiNimi;
see.bilance = tasakaal;
}

// getterid ja seadjad
avalikinthanki kaardi nr(){
tagasi kaardi nr;
}

avaliktühinesetCardNo(int kaardi nr){
see.cardNo = kaardi nr;
}

avalik String hankigeCustomerName(){
tagasi Kliendi nimi;
}

avaliktühinesetCustomerName(String customerName){
see.customerName = kliendiNimi;
}

avalikkahekordnesaadaBalance(){
tagasi tasakaal;
}

avaliktühinesetBalance(kahekordne tasakaal){
see.bilance = tasakaal;
}

@Alista
avaliktühinekuu saldo(){
System.out.println("Jaanuaris" + see.customerName + "kulutatud" + see.bilance);
}

@Alista
avaliktühinehilinemistasu(){
System.out.println(see.customerName + "kuutasu on 80,00 dollarit");
}

@Alista
avaliktühineAastamaks(){
System.out.println(see.customerName + "Aastatasu on 200,00 dollarit");
}
}

See finantsasutus läheb üle krediitkaartidele ja kaotab järk-järgult maksekaardid, nii et mõnedel nende klientidel on nüüd krediitkaardid.

avalikliidesKrediitkaart{
avaliktühineigakuine minimakse();
avaliktühinehuvi();
avaliktühineAastamaks();
}

Finantsasutuste ettevõtete süsteem töötleb nüüd ainult krediitkaarte, kuna kavatseb järgmisel aastal maksekaartide kasutamise lõpetada. Kuid enamik nende klientidest kasutab endiselt maksekaarte. Seega otsustasid insenerid, et kõige parem on kasutada adapterit, kuni kõik nende kliendid lähevad üle krediitkaardile.

avalikklassChargeCardAdapterrakendabKrediitkaart{
ChargeCard chargeCard;

avalikChargeCardAdapter(ChargeCard chargeCard){
see.chargeCard = chargeCard;
}

@Alista
avaliktühineigakuine minimakse(){
see.chargeCard.monthlyBalance();
}

@Alista
avaliktühinehuvi(){
see.chargeCard.lateFee();
}

@Alista
avaliktühineAastamaks(){
see.chargeCard. Aastamaks();
}
}

See ChargeCardAdapter Java klass rakendab krediitkaarti Java liides. See kohandab ChargeCardi (kohandujat), andes sellele krediitkaardi omadused. Näiteks hakkab süsteem töötlema krediitkaardi intressi, mis on veel konverteerimata maksekaardi kliendi viivis.

Adapteri mustri kasutamise eelised

Adapteri mustri kasutamise peamine eelis on see, et see võimaldab klientidel kasutada uusi teenuseid, teeke ja funktsioone ilma oma koodi muutmata. See soodustab rakenduse mastaapsust.

Teine eelis on see, et see muster on ka paindlik. Adapteri muster pakub kahte rakendusmeetodit: objektiadapterid ja klassiadapterid.