𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗮𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀: 𝗙𝗮𝗰𝗮𝗱𝗲, 𝗙𝗹𝘆𝘄𝗲𝗶𝗴𝗵𝘁, 𝗮𝗻𝗱 𝗣𝗿𝗼𝘅𝘆

Yapısal tasarım kalıpları, sınıfları ve nesneleri organize etmenize yardımcı olur.

Bugün, araç çantanızı tamamlamak için son üç kalıbı ele alıyoruz.

𝟭. 𝗧𝗵𝗲 𝗙𝗮𝗰𝗮𝗱𝗲 𝗣𝗮𝘁𝘁𝗲𝗿𝗻 Facade, karmaşık sistemleri basitleştirir. Karışık bir sınıf grubuna tek bir basit arayüz sağlar.

Bir sinema salonunu düşünün. Film izlemek için ışıkları kısmanız, projeksiyonu çalıştırmanız ve perdeleri açmanız gerekir. Beş farklı sistemi çağırmak yerine, tek bir metot çağırırsınız: theater.watch_movie().

Şu durumlarda kullanın:

  • Karmaşık bir alt sistemi basitleştirmek istediğinizde.
  • Geniş bir API için tek bir giriş noktasına ihtiyaç duyduğunuzda.
  • İstemcileri dahili mantıktan ayırmak (decouple) istediğinizde.

𝟮. 𝗧𝗵𝗲 𝗙𝗹𝘆𝘄𝗲𝗶𝗴𝗵𝘁 𝗣𝗮𝘁𝘁𝗲𝗿𝗻 Flyweight bellekten tasarruf sağlar. Binlerce benzer nesneniz olduğunda işe yarar.

Her nesnede her ayrıntıyı saklamak yerine veriyi bölersiniz. Paylaşılan, değişmeyen verileri (intrinsic state) bir yerde tutarsınız. Benzersiz verileri (extrinsic state) ise ayrı tutarsınız.

Şu durumlarda kullanın:

  • Bellek kullanımı gerçek bir sorun olduğunda.
  • Bir metin düzenleyicideki karakterler veya bir oyundaki parçacıklar gibi milyonlarca benzer nesneyi yönettiğinizde.
  • Performansı artırmak için nesne havuzu (object pooling) kullanmak istediğinizde.

𝟯. 𝗧𝗵𝗲 𝗣𝗿𝗼𝘅𝘆 𝗣𝗮𝘁𝘁𝗲𝗿𝗻 Proxy, başka bir nesnenin yerine geçer. Erişimi kontrol etmek için istemci ile gerçek nesne arasında durur.

Bir proxy şunları yapabilir:

  • Lazy load (Tembel yükleme): Ağır görselleri yalnızca kullanıcı tıkladığında yükler.
  • Erişimi kontrol etme: Bir kullanıcının veritabanını silme izni olup olmadığını kontrol eder.
  • Etkinliği günlüğe kaydetme: Belirli bir servisi kimin kullandığını takip eder.
  • Sonuçları önbelleğe alma: Maliyetli mantığı çalıştırmak yerine kaydedilmiş verileri döndürür.

Şu durumlarda kullanın:

  • Maliyetli işlemleri ertelemeniz gerektiğinde.
  • Hassas bir servisi korumanız gerektiğinde.
  • Orijinal sınıfı değiştirmeden günlükleme veya güvenlik eklemek istediğinizde.

𝗦𝘂𝗺𝗺𝗮𝗿𝘆 𝗧𝗮𝗯𝗹𝗲

• 𝗔𝗱𝗮𝗽𝘁𝗲𝗿: Uyumsuz sistemlerin birlikte çalışmasını sağlar. • 𝗕𝗿𝗶𝗱𝗴𝗲: Soyutlamayı uygulamadan ayırır. • 𝗖𝗼𝗺𝗽𝗼𝘀𝗶𝘁𝗲: Ağaç yapıları oluşturur. • 𝗗𝗲𝗰𝗼𝗿𝗮𝘁𝗼𝗿: Sınıfları değiştirmeden davranış ekler. • 𝗙𝗮𝗰𝗮𝗱𝗲: Karmaşık alt sistemleri basitleştirir. • 𝗙𝗹𝘆𝘄𝗲𝗶𝗴𝗵𝘁: Bellekten tasarruf etmek için verileri paylaşır. • 𝗣𝗿𝗼𝘅𝘆: Nesnelere erişimi kontrol eder.

Altın Kural: Bu kalıpları kodu sürdürülebilir kılmak için kullanın. Sadece gösteriş yapmak için kullanmayın.

Sırada, Davranışsal Tasarım Kalıpları (Behavioral Design Patterns) serisine başlıyoruz.

Source: https://dev.to/mahdi0shamlou/mahdi-shamlou-structural-design-patterns-2026-facade-flyweight-proxy-production-examples-g5l