Adapter
Шаблонът за проектиране на адаптер е един от шаблоните за структурен дизайн и се използва, така че два несвързани интерфейса да могат да работят заедно. Обектът, който се присъединява към тези несвързани интерфейси, се нарича адаптер .
Реалн пример за дизайн на адаптера е зарядното устройство за мобилни устройства. Мобилната батерия се нуждае от 3 волта за зареждане, но нормалният контакт произвежда или 120 V (САЩ), или 240 V (Европа). Така мобилното зарядно устройство работи като адаптер между гнездото за мобилно зареждане и стенния контакт. Ще се опитаме да внедрим мулти-адаптер, като използваме шаблон за проектиране на адаптер. Така че първо ще имаме два класа - Volt(за измерване на волта) и Socket(произвеждане на постоянни волта от 120V).
public class Volt {
private int volts;
public Volt(int v){
this.volts=v;
}
public int getVolts() {
return volts;
}
public void setVolts(int volts) {
this.volts = volts;
}
}public class Socket {
public Volt getVolt(){
return new Volt(120);
}
}Сега искаме да изградим адаптер, който може да произвежда 3 волта, 12 волта и 120 волта по подразбиране. Така че първо ще създадем интерфейс на адаптер с тези методи.
Модел на двупосочен адаптер
При прилагането на модела на адаптер има два подхода - адаптер на клас и адаптер на обект - но и двата подхода дават един и същ резултат.
Class Adapter – Тази форма използва наследяване на java и разширява интерфейса на източника, в нашия случай Socket клас.
Обектен адаптер - Този формуляр използва Java Composition и адаптерът съдържа изходния обект.
Шаблон за проектиране на адаптер - адаптер за клас
Ето реализацията на подхода за клас адаптер на нашия адаптер.
Шаблон за проектиране на адаптер - Реализация на адаптер на обект
Ето реализацията на Object adapter на нашия адаптер.
Забележете, че и двете реализации на адаптера са почти еднакви и имплементират SocketAdapterинтерфейса. Интерфейсът на адаптера може също да бъде абстрактен клас . Ето тестова програма за използване на нашата реализация на модел на дизайн на адаптер.
Когато стартираме горната тестова програма, получаваме следния изход.
Last updated
Was this helpful?