İçeriğe geç
Zeynep Baş — Ana sayfa
Tüm yazılar
  • 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

Diğer yazılar