- Design Pattern
Adapter Pattern Nedir?
Adapter Pattern, birbiriyle uyumsuz arayüzlere sahip sınıfların birlikte çalışmasını sağlayan yapısal (Structural) tasarım desenidir.
Zeynep Baş3 dk okuma
Adapter Pattern Nedir?
Bir çevirmen gibi çalışır.
Adapter Pattern, farklı veri yapıları veya farklı arayüzler kullanan iki sistemi birbirine bağlayan tasarım desenidir. Mevcut sınıfın kodunu değiştirmeden yeni sistemin beklediği yapıya dönüştürür.
Structural Design Pattern'dır.
Kod tekrarını azaltır.
Mevcut sistemi değiştirmez.
Eski ve yeni sistemlerin birlikte çalışmasını sağlar.
Gerçek hayatta priz dönüştürücü (travel adapter) en güzel örneklerden biridir. Elektrik sistemi değişmez, sadece adaptör iki farklı standardı birbirine bağlar.
USB Adaptörü
HDMI - VGA Dönüştürücü
Telefon Şarj Adaptörü
Elektrik Priz Adaptörü
Neden Adapter Pattern Kullanılır?
Kodun bağımlılığını azaltır.
Projelerde backend'den gelen veri yapısı ile frontend'in ihtiyaç duyduğu yapı çoğu zaman farklıdır. Adapter Pattern bu farkı tek bir noktada çözer.
API Response dönüşümü
Legacy sistem entegrasyonu
Üçüncü parti servis kullanımı
Kodun sürdürülebilir olması
UI bileşenleri doğrudan API'ye bağımlı olmaz. Böylece backend değişse bile yalnızca adapter güncellenir.
Component değişmez.
Hook değişmez.
Service değişmez.
Sadece Adapter güncellenir.
Çalışma Mantığı
Veri tek noktada dönüştürülür.
API'den gelen ham veri önce Adapter katmanına gelir. Adapter bu veriyi uygulamanın kullandığı modele dönüştürür. Daha sonra Component yalnızca bu modeli kullanır.
API Response
Adapter
Application Model
React Component
Bu yaklaşım sayesinde uygulamanın diğer katmanları veri formatını bilmek zorunda kalmaz.
Loose Coupling
Single Responsibility
Temiz Mimari
Kolay Test Edilebilirlik
React ve Next.js Projelerinde Kullanımı
Gerçek projelerde en sık kullanım alanı API dönüşümüdür.
Örneğin backend aşağıdaki gibi bir veri döndürsün:
product_name
product_price
product_image
created_at
Fakat uygulamanın tamamında daha okunabilir bir model kullanmak isteyelim.
title
price
image
createdAt
Neden Büyük Avantaj Sağlar?
Backend değişiklikleri uygulamayı etkilemez.
Diyelim ki backend geliştiricisi product_name alanını title olarak değiştirdi. Eğer Adapter Pattern kullanılmıyorsa onlarca component güncellenmek zorunda kalabilir.
ProductCard
ProductDetail
Wishlist
Cart
Search
Favorites
Adapter Pattern kullanıldığında yalnızca adapter dosyasında küçük bir değişiklik yapılır. Diğer tüm componentler aynı şekilde çalışmaya devam eder.
Tek dosyada değişiklik
Bakımı kolay
Düşük maliyet
Daha güvenli geliştirme
Proje Mimarisinde Nerede Bulunur?
Genellikle adapters klasörü altında bulunur.
Feature Based Architecture kullanan projelerde adapter dosyaları ilgili feature içerisinde yer alır.
features/products/adapters
features/users/adapters
features/orders/adapters
features/profile/adapters
Bazı projelerde ortak adapter'lar shared/adapters klasörü altında da tutulabilir.
shared/adapters
core/adapters
lib/adapters
Hangi Durumlarda Kullanılır?
Adapter Pattern birçok senaryoda tercih edilir.
Sadece API dönüşümü için değil, farklı sistemlerin birlikte çalışmasını sağlamak için de kullanılır.
REST API
GraphQL
Firebase
Supabase
Stripe
Shopify
Legacy Sistemler
Üçüncü parti servislerden gelen veriler uygulamanın standart modeline dönüştürülür.
Payment Servisleri
Authentication
CRM Sistemleri
ERP Entegrasyonları
Adapter Pattern'in Avantajları
Büyük ölçekli projelerde bakım maliyetini ciddi şekilde azaltır.
Kodun farklı katmanları birbirine doğrudan bağımlı olmaz. Böylece değişikliklerin etkisi minimum seviyeye iner.
Loose Coupling
Kolay Bakım
Yüksek Okunabilirlik
Tek Sorumluluk Prensibi
Kolay Test Yazımı
Tekrar Kullanılabilir Kod
Adapter Pattern Clean Architecture ve Feature Based Architecture ile birlikte kullanıldığında daha güçlü bir yapı oluşturur.
Repository Pattern
Service Layer
Custom Hooks
Clean Architecture
Yaygın Yapılan Hatalar
Adapter kullanırken dikkat edilmesi gereken noktalar.
Bazı projelerde API verisi doğrudan component içerisinde dönüştürülür. Bu yaklaşım zamanla kod tekrarına neden olur.
Component içinde map yapmak
Her sayfada aynı dönüşümü yazmak
Service katmanında dönüşüm yapmak
API modelini doğrudan UI'da kullanmak
Adapter yalnızca veri dönüştürmelidir. İş kuralları veya API çağrıları adapter içerisinde yer almamalıdır.
API çağrısı yapmamalı
Business Logic içermemeli
State yönetmemeli
Sadece dönüşüm yapmalı
Sonuç
Adapter Pattern sürdürülebilir yazılım geliştirmenin önemli parçalarından biridir.
Özellikle React, Next.js ve kurumsal projelerde backend ile frontend arasındaki bağımlılığı azaltarak daha esnek ve ölçeklenebilir uygulamalar geliştirilmesini sağlar.
Kolay bakım
Merkezi veri dönüşümü
Esnek mimari
Yüksek ölçeklenebilirlik
Eğer bir projede API modeli ile UI modeli farklıysa Adapter Pattern kullanmak uzun vadede önemli avantaj sağlar.
API Response
Adapter Layer
UI Model
Reusable Components