Adapter deseni
Uyumsuz arayüzleri birbirine bağlayan Adapter desenini öğrenirsin.
Adapter deseni ne yapar?
Adapter deseni uyumsuz bir sınıfı, istemcinin beklediği arayüze uyarlar. Elinde çalışmayan bir Adaptee sınıfı varsa ve istemci Target arayüzünü bekliyorsa, araya bir Adapter koyarak iki tarafı buluşturursun.
Adapter, Target arayüzünü uygular ve içerde bir Adaptee örneği tutar. İstemcinin çağırdığı request yöntemi, bu çağrıyı Adaptee'nin kendi yöntemine çevirir; böylece uyumsuzluk görünmez olur.
Adapter uygulaması
Adapter sınıfı Target arayüzünü uygular ve kurucuda bir Adaptee örneği alır. İstemcinin çağırdığı request yöntemi, bu örneğin specificRequest yöntemini çağırır ve sonucu döndürür.
Böylece istemci $adapter->request() yazarak Adaptee'nin specificRequest çıktısını alır; aradaki çeviri Adapter'ın içinde kalır. Adaptee sınıfına dokunmadan uyum sağlanmış olur.
Uygulama Adapter ile uyumlu yanıt al
Bir Target arayüzü yaz (request(): string yöntemi olsun). Bir Adaptee sınıfı yaz; specificRequest(): string yöntemi 'uyumlu yanıt' döndürsün. Adapter implements Target olsun; kurucuda Adaptee örneği alıp request içinde specificRequest'i çağırır. Adapter'ı çağır ve sonucu yazdır.
Örnek çözümü göster
string; } yaz. Adaptee sınıfı specificRequest 'uyumlu yanıt' döndürsün. Adapter implements Target, kurucuda Adaptee alsın, request içinde specificRequest çağırır. new Adapter(new Adaptee()) ile çalıştır, ->request() yazdır.
Örnek çözüm:
<?php
interface Target {
public function request(): string;
}
class Adaptee {
public function specificRequest(): string { return 'uyumlu yanıt'; }
}
class Adapter implements Target {
public function __construct(private Adaptee $adaptee) {}
public function request(): string { return $this->adaptee->specificRequest(); }
}
$a = new Adapter(new Adaptee());
echo $a->request();
Kendini test et
-
Adapter deseni ne yapar?
- Miras almadan davranış ekler
- Tek örnek guarantee eder
- Uyumsuz arayüzü hedefe uyarlar
- Yeni bir örnek oluşturur
Cevabı göster
Uyumsuz arayüzü hedefe uyarlar — Doğru. Adapter uyumsuz arayüzü hedefe uyarlar.
-
Adapter kavramlarını eşleştir
- Target
- hedef arayüz
- Adaptee
- uyumsuz sınıf
- Adapter
- uyarlayıcı
- request
- hedef yöntem
-
Adapter'ın sardığı sınıf
<?php class Adapter implements Target { public function __construct(private ____ $adaptee) {} public function request(): string { return $this->adaptee->specificRequest(); } }Cevabı göster
<?php class Adapter implements Target { public function __construct(private Adaptee $adaptee) {} public function request(): string { return $this->adaptee->specificRequest(); } }