Co je návrhový vzor adaptéru a jak jej můžete použít?

Co je návrhový vzor adaptéru a jak jej můžete použít?
Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

S nárůstem architektury orientované na služby (SOA) stále více organizací využívá pro své podnikové systémy služby třetích stran. Tyto společnosti musí držet krok s rychle se měnícím podnikatelským prostředím, což může znamenat opuštění služeb jednoho poskytovatele služeb za jiného.





V takových případech může být stávající architektura podniku nekompatibilní s architekturou nového poskytovatele. Místo plýtvání měsíců přepisováním podnikového kódu, aby byl kompatibilní s novým softwarem, může podnik použít návrhový vzor adaptéru.





jak spouštět programy pro mac v systému windows

Jaký je návrhový vzor adaptéru?

Vzor adaptéru umožňuje, aby třídy, které mají nekompatibilní rozhraní, spolupracovaly. Dělá to převodem rozhraní existující třídy (nebo softwaru) na rozhraní, které klient (nebo služba) očekává. Existují dva typy adaptérů: objektové adaptéry a adaptéry třídy.





Objektový adaptér používá kompozici k zabalení adaptéru do adaptéru a efektivně vytváří rozhraní, které klient očekává. Pokud tedy klient očekává řetězec, adaptér vezme celé číslo (adaptovaný) a dá mu vlastnosti řetězce.

 Objektový adaptér

Výše uvedený diagram tříd představuje objektový adaptér. The třída adaptéru implementuje cílové rozhraní , efektivně získat přístup ke všem metodám rozhraní. Poté se přizpůsobí adaptant a zabalí to adaptant s cílové rozhraní metody.



Adaptér třídy používá vícenásobnou dědičnost, kde třída adaptéru je podtřídou jak adaptovaného, ​​tak cílové třídy. Níže uvedený diagram tříd představuje adaptér třídy, který můžete volně používat v programovacích jazycích, které podporují vícenásobnou dědičnost.

 Adaptér třídy

Implementace návrhového vzoru adaptéru v Javě

Tato aplikace bude implementovat objektový adaptér. Tato ukázková aplikace bude simulovat finanční organizaci přecházející z používání a zpracování charge karet na kreditní karty. Tato organizace původně používala následující rozhraní platební karty:





co je dvojité mezery ve slově
 public interface ChargeCard { 
  public void monthlyBalance();
  public void lateFee();
  public void Annualfee();
}

Oblíbeným typem platební karty, kterou systém této organizace zpracovává, je švestková karta:

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

Tato finanční instituce přechází na kreditní karty a postupně vyřazuje platební karty, takže někteří z jejích zákazníků nyní mají kreditní karty:





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

Podnikový systém finančních institucí nyní zpracovává pouze kreditní karty, protože se v nadcházejícím roce chystá přestat používat charge karty. Většina jejich zákazníků ale stále používá charge karty. Inženýři se tedy rozhodli, že bude nejlepší implementovat adaptér, dokud všichni jejich zákazníci nepřejdou na kreditní kartu.

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

Tento adaptér ChargeCard třída Java implementuje kreditní kartu rozhraní Java . Přizpůsobuje ChargeCard (přizpůsobený) a dává jí vlastnosti kreditní karty. Systém například zpracuje úrokový poplatek kreditní karty, což je poplatek z prodlení u zákazníka s charge kartou, který ještě neprovedl konverzi.

Výhody použití vzoru adaptéru

Hlavní výhodou použití vzoru adaptéru je, že umožňuje klientům používat nové služby, knihovny a funkce, aniž by měnili svůj kód. To podporuje škálovatelnost aplikací.

Další výhodou je, že tento vzor je také pružný. Vzor adaptéru poskytuje dvě metody implementace: objektové adaptéry a adaptéry tříd.