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