Какво представлява моделът на дизайна на адаптера и как можете да го използвате?

Какво представлява моделът на дизайна на адаптера и как можете да го използвате?
Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

С нарастването на ориентираната към услуги архитектура (SOA) все повече организации използват услуги на трети страни за своите корпоративни системи. Тези компании трябва да са в крак с бързо променящата се бизнес среда, което може да означава изоставяне на услугите на един доставчик на услуги за друг.





В такива случаи съществуващата архитектура на бизнеса може да е несъвместима с тази на нов доставчик. Вместо да губи месеци в пренаписване на корпоративен код, за да стане съвместим с нов софтуер, бизнесът може да използва шаблона за проектиране на адаптера.





Какво представлява моделът на дизайна на адаптера?

Моделът на адаптера позволява на класове, които имат несъвместими интерфейси, да работят заедно. Той прави това, като преобразува интерфейса на съществуващ клас (или софтуер) в такъв, който клиент (или услуга) очаква. Има два типа адаптери: адаптери на обекти и адаптери на класове.





Обектният адаптер използва композиция, за да обвие адаптирания с адаптера, като ефективно създава интерфейса, който клиентът очаква. Така че, ако клиентът очаква низ, адаптерът ще вземе цяло число (адаптираното) и ще му даде характеристиките на низ.

 Обектен адаптер

Диаграмата на класовете по-горе представлява адаптера на обекта. The клас адаптер прилага на целеви интерфейс , ефективно получаване на достъп до всички методи на интерфейса. След това се адаптира адаптиран и увива това адаптиран с целеви интерфейс методи.



Адаптерът на класа използва множествено наследяване, където класът на адаптера е подклас както на адаптирания, така и на целевия клас. Диаграмата на класа по-долу представлява адаптера на класа, който можете свободно да използвате в езици за програмиране, които поддържат множествено наследяване.

 Адаптер за клас

Внедряване на шаблона за проектиране на адаптер в Java

Това приложение ще внедри обектния адаптер. Това примерно приложение ще симулира финансова организация, преминаваща от използване и обработка на карти за плащане към кредитни карти. Тази организация първоначално използва следния интерфейс на таксуваща карта:





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

Популярен тип таксуваща карта, която системата на тази организация обработва, е картата със сливи:

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

Тази финансова институция преминава към кредитни карти и постепенно премахва картите за плащане, така че някои от клиентите им вече имат кредитни карти:





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

Корпоративната система на финансовата институция вече обработва само кредитни карти, тъй като се стреми да прекрати използването на таксуващи карти през следващата година. Но повечето от техните клиенти все още използват таксуващи карти. И така, инженерите решиха, че е най-добре да внедрят адаптер, докато всички техни клиенти преминат към кредитна карта.

какво означава емоджи при изпращане на текстови съобщения
 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();
  }
}

Този адаптер за ChargeCard Java клас внедрява CreditCard Java интерфейс . Той адаптира ChargeCard (адаптираната карта), придавайки й характеристиките на кредитна карта. Например, системата ще обработи таксата за лихва по кредитна карта, която е таксата за закъснение на клиент на карта с таксуване, който все още не е конвертирал.

Предимства от използването на модела на адаптера

Основното предимство на използването на модела на адаптера е, че позволява на клиентите да използват нови услуги, библиотеки и функции, без да променят своя код. Това насърчава мащабируемостта на приложението.

Друго предимство е, че този модел е и гъвкав. Моделът на адаптера осигурява два метода за изпълнение: адаптери на обекти и адаптери на класове.