Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Palvelukeskeisen arkkitehtuurin (SOA) nousun myötä yhä useammat organisaatiot käyttävät kolmannen osapuolen palveluita yritysjärjestelmiinsä. Näiden yritysten on pysyttävä nopeasti muuttuvan liiketoimintaympäristön mukana, mikä voi tarkoittaa palveluntarjoajan palvelujen luopumista toisen palveluntarjoajan palveluksessa.

Tällaisissa tapauksissa yrityksen nykyinen arkkitehtuuri saattaa olla yhteensopimaton uuden palveluntarjoajan arkkitehtuurin kanssa. Sen sijaan, että yritys tuhlaa kuukausia yrityskoodin uudelleenkirjoittamiseen, jotta se olisi yhteensopiva uusien ohjelmistojen kanssa, yritys voi käyttää sovittimen suunnittelumallia.

Mikä on sovittimen suunnittelumalli?

Sovitinkuvio mahdollistaa luokkien, joissa on yhteensopimattomia liitäntöjä, työskennellä yhdessä. Se tekee tämän muuntamalla olemassa olevan luokan (tai ohjelmiston) käyttöliittymän sellaiseksi, jota asiakas (tai palvelu) odottaa. Sovittimia on kahdenlaisia: objektisovittimet ja luokkasovittimet.

Objektisovitin käyttää koostumusta kääriäkseen sovittimen sovittimeen, mikä tuottaa tehokkaasti asiakkaan odottaman käyttöliittymän. Joten jos asiakas odottaa merkkijonoa, sovitin ottaa kokonaisluvun (sovittajan) ja antaa sille merkkijonon ominaisuudet.

Yllä oleva luokkakaavio edustaa objektisovitinta. The sovitinluokka toteuttaa kohderajapinta, jolloin pääset tehokkaasti käsiksi kaikkiin käyttöliittymän menetelmiin. Sitten se mukautuu mukautuva ja peittää sen mukautuva kanssa kohderajapinta menetelmiä.

Luokkasovitin käyttää moniperintöä, jossa sovitinluokka on sekä mukautetun että kohdeluokan alaluokka. Alla oleva luokkakaavio edustaa luokkasovitinta, jota voit vapaasti käyttää ohjelmointikielissä, jotka tukevat useita perintöä.

Adapter Design Patternin käyttöönotto Javassa

Tämä sovellus toteuttaa objektisovittimen. Tämä mallisovellus simuloi rahoitusorganisaatiota siirtymässä maksukorttien käytöstä ja käsittelystä luottokortteihin. Tämä organisaatio käytti alun perin seuraavaa maksukorttiliittymää:

julkinenkäyttöliittymäMaksukortti{
julkinenmitätönkuukausittainen saldo();
julkinenmitätönmyöhästymismaksu();
julkinenmitätönVuosimaksu();
}

Suosittu maksukorttityyppi, jota tämän organisaation järjestelmä käsittelee, on luumukortti:

julkinenluokkaaPlumCardtoteuttaaMaksukortti{
yksityinenint kortin nro;
yksityinen merkkijono asiakkaanNimi;
yksityinenkaksinkertainen saldo;

// ensisijainen rakentaja
julkinenPlumCard(int cardNo, String customerName, kaksinkertainen saldo){
Tämä.cardNo = kortinnro;
Tämä.customerName = asiakkaanNimi;
Tämä.balance = tasapaino;
}

// Getterit ja asettajat
julkinenintgetCardNo(){
palata kortin nro;
}

julkinenmitätönsetCardNo(int kortin nro){
Tämä.cardNo = kortinnro;
}

julkinen merkkijono getCustomerName(){
palata Asiakkaan nimi;
}

julkinenmitätönsetCustomerName(merkkijono customerName){
Tämä.customerName = asiakkaanNimi;
}

julkinenkaksinkertainengetBalance(){
palata saldo;
}

julkinenmitätönsetBalance(kaksinkertainen saldo){
Tämä.balance = tasapaino;
}

@Ohittaa
julkinenmitätönkuukausittainen saldo(){
System.out.println("Tammikuussa " + Tämä.customerName + "vietti" + Tämä.saldo);
}

@Ohittaa
julkinenmitätönmyöhästymismaksu(){
System.out.println(Tämä.customerName + "kuukausimaksu on 80,00 dollaria");
}

@Ohittaa
julkinenmitätönVuosimaksu(){
System.out.println(Tämä.customerName + "vuosimaksu on 200,00 dollaria");
}
}

Tämä rahoituslaitos on siirtymässä luottokortteihin ja luopumassa maksukorteista, joten joillakin heidän asiakkaistaan ​​on nyt luottokortteja:

julkinenkäyttöliittymäLuottokortti{
julkinenmitätönkuukausittainen minimimaksu();
julkinenmitätönkiinnostuksen kohde();
julkinenmitätönVuosimaksu();
}

Rahoituslaitosten yritysjärjestelmä käsittelee nyt vain luottokortteja, sillä maksukorttien käytöstä pyritään luopumaan ensi vuoden aikana. Suurin osa asiakkaistaan ​​kuitenkin käyttää maksukortteja. Joten insinöörit päättivät, että oli parasta ottaa käyttöön sovitin, kunnes kaikki heidän asiakkaansa ovat siirtyneet luottokorttiin.

julkinenluokkaaChargeCard-sovitintoteuttaaLuottokortti{
ChargeCard latauskortti;

julkinenChargeCard-sovitin(ChargeCard chargeCard){
Tämä.chargeCard = chargeCard;
}

@Ohittaa
julkinenmitätönkuukausittainen minimimaksu(){
Tämä.chargeCard.monthlyBalance();
}

@Ohittaa
julkinenmitätönkiinnostuksen kohde(){
Tämä.chargeCard.lateFee();
}

@Ohittaa
julkinenmitätönVuosimaksu(){
Tämä.maksukortti. Vuosimaksu();
}
}

Tämä ChargeCardAdapter Java luokka ottaa käyttöön luottokortin Java käyttöliittymä. Se mukauttaa ChargeCardia (sovitettua) antaen sille luottokortin ominaisuudet. Järjestelmä käsittelee esimerkiksi luottokortin korkomaksun, joka on vielä konvertoimattoman maksukorttiasiakkaan myöhästymismaksu.

Adapterimallin käytön edut

Suurin etu sovitinmallin käytössä on, että sen avulla asiakkaat voivat käyttää uusia palveluita, kirjastoja ja ominaisuuksia muuttamatta koodiaan. Tämä edistää sovellusten skaalautuvuutta.

Toinen etu on, että tämä kuvio on myös joustava. Sovitinmalli tarjoaa kaksi toteutustapaa: objektisovittimet ja luokkasovittimet.