CodeBlanks Logo Icon CodeBlanks

Adapter deseni

PHP kursu · İleri seviye · Ders 86/92

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

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

  2. Adapter kavramlarını eşleştir

    Target
    hedef arayüz
    Adaptee
    uyumsuz sınıf
    Adapter
    uyarlayıcı
    request
    hedef yöntem
  3. 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(); }
    }
    

İleri seviye bölümündeki tüm dersler