Hva er adapterdesignmønsteret og hvordan kan du bruke det?

Hva er adapterdesignmønsteret og hvordan kan du bruke det?
Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Med fremveksten av tjenesteorientert arkitektur (SOA), bruker flere og flere organisasjoner tredjepartstjenester for sine bedriftssystemer. Disse selskapene må holde tritt med et raskt skiftende forretningsmiljø, noe som kan bety å forlate tjenestene til en tjenesteleverandør for en annen.





I slike tilfeller kan en bedrifts eksisterende arkitektur være uforenlig med den til en ny leverandør. I stedet for å kaste bort måneder på å omskrive bedriftskode for å gjøre den kompatibel med ny programvare, kan en bedrift bruke adapterdesignmønsteret.





Hva er adapterdesignmønsteret?

Adaptermønsteret lar klasser som har inkompatible grensesnitt fungere sammen. Den gjør dette ved å konvertere grensesnittet til en eksisterende klasse (eller programvare) til en som en klient (eller tjeneste) forventer. Det finnes to typer adaptere: objektadaptere og klasseadaptere.





Objektadapteren bruker komposisjon for å pakke adapteren inn med adapteren, og produserer effektivt grensesnittet som klienten forventer. Så hvis klienten forventer en streng, vil adapteren ta et heltall (tilpasseren) og gi den egenskapene til en streng.

gratis bingospill for Android -telefon
 Objektadapter

Klassediagrammet ovenfor representerer objektadapteren. De adapter klasse implementerer målgrensesnitt , som effektivt får tilgang til alle grensesnittets metoder. Så tilpasser den seg en tilpasset og pakker det inn tilpasset med målgrensesnitt metoder.



Klasseadapteren bruker multippel arv, der adapterklassen er underklassen til både den tilpassede og målklassen. Klassediagrammet nedenfor representerer klasseadapteren, som du står fritt til å bruke i programmeringsspråk som støtter multippel arv.

 Klasse adapter

Implementering av adapterdesignmønsteret i Java

Denne applikasjonen vil implementere objektadapteren. Denne eksempelapplikasjonen vil simulere en finansiell organisasjon som går fra bruk og behandling av betalingskort til kredittkort. Denne organisasjonen brukte opprinnelig følgende betalingskortgrensesnitt:





 public interface ChargeCard { 
  public void monthlyBalance();
  public void lateFee();
  public void Annualfee();
}

En populær type betalingskort som denne organisasjonens system behandler er plommekortet:

 public class PlumCard implements ChargeCard { 
  private int cardNo;
  private String customerName;
  private double balance;

  // primary constructor
  public PlumCard(int cardNo, String customerName, double balance) {
    this.cardNo = cardNo;
    this.customerName = customerName;
    this.balance = balance;
  }

  // getters and setters
  public int getCardNo() {
    return cardNo;
  }

  public void setCardNo(int cardNo) {
    this.cardNo = cardNo;
  }

  public String getCustomerName() {
    return customerName;
  }

  public void setCustomerName(String customerName) {
    this.customerName = customerName;
  }

  public double getBalance() {
    return balance;
  }

  public void setBalance(double balance) {
    this.balance = balance;
  }
   
  @Override
  public void monthlyBalance() {
    System.out.println("In January " + this.customerName + " spent " + this.balance);
  }

  @Override
  public void lateFee() {
    System.out.println(this.customerName + " monthly latefee is .00");
  }

  @Override
  public void Annualfee() {
    System.out.println(this.customerName + " annual fee is 0.00");
  }
}

Denne finansinstitusjonen går over til kredittkort og fase ut betalingskortene, så noen av kundene deres har nå kredittkort:





 public interface CreditCard { 
  public void monthlyMinPayment();
  public void interest();
  public void Annualfee();
}

Bedriftssystemet for finansinstitusjoner behandler nå bare kredittkort, da det er ute etter å slutte å bruke betalingskort i løpet av det kommende året. Men de fleste av kundene deres bruker fortsatt betalingskort. Så ingeniørene bestemte at det var best å implementere en adapter til alle kundene deres gikk over til et kredittkort.

 public class ChargeCardAdapter implements CreditCard { 
  ChargeCard chargeCard;

  public ChargeCardAdapter(ChargeCard chargeCard) {
    this.chargeCard = chargeCard;
  }

  @Override
  public void monthlyMinPayment() {
    this.chargeCard.monthlyBalance();
  }

  @Override
  public void interest() {
    this.chargeCard.lateFee();
  }

  @Override
  public void Annualfee() {
    this.chargeCard.Annualfee();
  }
}

Denne ChargeCardAdapteren Java klasse implementerer kredittkortet Java-grensesnitt . Den tilpasser ChargeCard (tilpasseren), og gir den egenskapene til et kredittkort. For eksempel vil systemet behandle rentegebyret på et kredittkort, som er forsinkelsesgebyret til en betalingskortkunde som ikke har konvertert ennå.

Fordeler med å bruke adaptermønsteret

Den største fordelen med å bruke adaptermønsteret er at det lar klienter bruke nye tjenester, biblioteker og funksjoner uten å endre koden. Dette fremmer applikasjonsskalerbarhet.

En annen fordel er at dette mønsteret også er fleksibelt. Adaptermønsteret gir to implementeringsmetoder: objektadaptere og klasseadaptere.