Mis on adapteri kujundusmuster ja kuidas seda kasutada?

Mis on adapteri kujundusmuster ja kuidas seda kasutada?
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.





kuidas määrata gif -fail Windows 10 taustapildiks

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.

 Objekti adapter

Ü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.

 Klassi adapter

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:





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

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

 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");
  }
}

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





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

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.

 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();
  }
}

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.

kui palju inimesi saab korraga netflixi vaadata

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