Kas ir adaptera dizaina modelis un kā to izmantot?

Kas ir adaptera dizaina modelis un kā to izmantot?
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Līdz ar pakalpojumu orientētas arhitektūras (SOA) pieaugumu arvien vairāk organizāciju izmanto trešo pušu pakalpojumus savām uzņēmuma sistēmām. Šiem uzņēmumiem ir jāseko līdzi strauji mainīgajai uzņēmējdarbības videi, kas var nozīmēt atteikšanos no viena pakalpojumu sniedzēja pakalpojumiem citam.





Šādos gadījumos uzņēmuma esošā arhitektūra var būt nesaderīga ar jauna pakalpojumu sniedzēja arhitektūru. Tā vietā, lai tērētu mēnešus, pārrakstot uzņēmuma kodu, lai tas būtu saderīgs ar jauno programmatūru, uzņēmums var izmantot adaptera dizaina modeli.





Kāds ir adaptera dizaina modelis?

Adaptera modelis ļauj klasēm, kurām ir nesaderīgas saskarnes, strādāt kopā. Tas tiek darīts, pārveidojot esošās klases (vai programmatūras) saskarni tādā, kādu sagaida klients (vai pakalpojums). Ir divu veidu adapteri: objektu adapteri un klases adapteri.





Objekta adapteris izmanto kompozīciju, lai ietītu adaptētāju ar adapteri, efektīvi izveidojot klienta sagaidāmo saskarni. Tātad, ja klients sagaida virkni, adapteris ņems veselu skaitli (adaptētājs) un piešķirs tam virknes īpašības.

uzlauzts bankas konts un maršrutēšanas numuri
 Objekta adapteris

Iepriekš redzamā klases diagramma attēlo objekta adapteri. The adaptera klase īsteno mērķa saskarne , efektīvi iegūstot piekļuvi visām saskarnes metodēm. Tad tas pielāgo an adaptētais un iesaiņo to adaptētais Ar mērķa saskarne metodes.



Klases adapteris izmanto vairākkārtēju mantojumu, kur adaptera klase ir gan adaptētāja, gan mērķa klases apakšklase. Tālāk redzamā klašu diagramma attēlo klases adapteri, kuru varat brīvi izmantot programmēšanas valodās, kas atbalsta vairāku pārmantošanu.

 Klases adapteris

Adaptera dizaina modeļa ieviešana Java

Šī lietojumprogramma ieviesīs objekta adapteri. Šis lietojumprogrammas paraugs simulēs finanšu organizācijas pāreju no maksājumu karšu izmantošanas un apstrādes uz kredītkartēm. Šī organizācija sākotnēji izmantoja šādu maksājumu karšu saskarni:





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

Populārs maksas karšu veids, ko apstrādā šīs organizācijas sistēma, ir plūmju karte:

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

Šī finanšu iestāde pāriet uz kredītkartēm un pakāpeniski atceļ maksājumu karšu izmantošanu, tāpēc dažiem to klientiem tagad ir kredītkartes:





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

Finanšu institūciju uzņēmumu sistēma tagad apstrādā tikai kredītkartes, jo nākamajā gadā tā plāno pārtraukt maksājumu karšu izmantošanu. Bet lielākā daļa viņu klientu joprojām izmanto maksājumu kartes. Tāpēc inženieri nolēma, ka vislabāk ir ieviest adapteri, līdz visi viņu klienti pāriet uz kredītkarti.

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

Šis ChargeCardAdapter Java klase ievieš Kredītkarti Java interfeiss . Tas pielāgo ChargeCard (adaptējamo), piešķirot tai kredītkartes īpašības. Piemēram, sistēma apstrādās kredītkartes procentu maksu, kas ir nokavējuma nauda kredītkartes klientam, kurš vēl nav veicis konvertāciju.

Adaptera modeļa izmantošanas priekšrocības

Galvenā adaptera modeļa izmantošanas priekšrocība ir tā, ka tas ļauj klientiem izmantot jaunus pakalpojumus, bibliotēkas un līdzekļus, nemainot savu kodu. Tas veicina lietojumprogrammu mērogojamību.

Vēl viena priekšrocība ir tā, ka šis modelis ir arī elastīgs. Adaptera modelis nodrošina divas ieviešanas metodes: objektu adapterus un klases adapterus.