Adapter nümunəsi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Adapter naxşı (Adapter Pattern) — bu struktur dizayn naxşıdır ki, uyğunsuz interfeysə malik sinflərin birlikdə işləməsinə imkan verir. Bu, müştərinin gözlədiyi digər interfeysə sinfin interfeysini çevirmək üçün bir örtük kimi fəaliyyət göstərir.
Tətbiqlər:
- Uyğunsuz interfeysə malik üçüncü tərəf kitabxanalarının inteqrasiyası.
- Mövcud sinflərdən yeni sistemlərdə istifadə etmək, onları dəyişmədən.
- Müstəqil inkişaf etdirilmiş sinflər arasında qarşılıqlı əlaqəni təmin etmək.
İcra nümunəsi (obyekt adapteri):
Tutaq ki, LegacyService adlı və oldRequest() metoduna malik sinf mövcuddur:
class LegacyService {
public void oldRequest() {
// köhnə kod
}
}
Və yeni interfeys NewService və onun newRequest() metodu ilə:
interface NewService {
void newRequest();
}
Adapter ServiceAdapter NewService-i həyata keçirir və LegacyService-ə istinad saxlayır:
class ServiceAdapter implements NewService {
private LegacyService legacyService;
public ServiceAdapter(LegacyService legacyService) {
this.legacyService = legacyService;
}
@Override
public void newRequest() {
// Yeni metod çağırışını köhnə metoda çevirmək
legacyService.oldRequest();
}
}
Müştəri LegacyService-dən NewService interfeysi vasitəsilə istifadə edə bilər:
NewService service = new ServiceAdapter(new LegacyService());
service.newRequest(); // oldRequest() çağıracaq
Həmçinin, sinif adapteri adlı variant da mövcuddur; bu, çoxlu irsiyyət (əgər dil dəstəkləyirsə) və ya adaptasiya ediləcək sinfdən irsiyyət və məqsədli interfeysin tətbiqi ilə həyata keçirilir. Java-da çoxlu irsiyyət olmadığı üçün, bu, adaptasiya ediləcək sinfdən irsiyyət və adapter interfeysinin tətbiqi ilə həyata keçirilir, lakin bu yanaşma daha az çevikdir. Ob'ekt adapteri daha üstün sayılır, çünki o, alt sinifləri uyğunlaşdırmağa və sərt əlaqəni qarşısını almağa imkan verir.
Üstünlüklər:
- Uyğunsuz sinflərin yenidən istifadəsinə imkan verir.
- Interfeys çevirmə detallərini kapsülləyir.
- Sistemin çevikliyini artırır.
Çatışmazlıqlar:
- Yeni sinf əlavə etməklə mürəkkəbliyi artıra bilər.
- Əlavə abstraksiya səviyyəsi səbəbindən performans az qala azala bilər.