Design Patterns (Tasarım Kalıpları)

Yazılım geliştirmede tekrar eden tasarım sorunlarına karşı geliştirilmiş, dile bağımsız ve yeniden kullanılabilir çözüm şablonları.

Tasarım kalıpları (design patterns), yazılım geliştirmede tekrar eden tasarım sorunlarına karşı deneyimle şekillenmiş, dile bağımsız ve yeniden kullanılabilir çözüm şablonlarıdır. Belirli bir kodun kopyalanıp yapıştırılmasını değil, bir problemi çözmek için izlenebilecek genel bir yaklaşım biçimini tanımlarlar. 1994 yılında Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides'ten oluşan "Gang of Four" (GoF — Dörtlü Çete) tarafından kaleme alınan "Design Patterns: Elements of Reusable Object-Oriented Software" adlı kitapla bu kavram yazılım mühendisliğinin temel referanslarından biri haline gelmiştir. GoF kitabı, nesne yönelimli programlamada sık karşılaşılan 23 kalıbı tanımlar ve bu kalıpları üç ana kategoride ele alır. Yaratımsal kalıplar (Creational Patterns), nesnelerin nasıl oluşturulacağına ilişkin esneklik sağlar. Singleton kalıbı bir sınıftan yalnızca tek bir nesne üretilmesini garanti ederken, Factory (Fabrika) kalıbı hangi somut nesnenin oluşturulacağını istemciden soyutlar. Yapısal kalıplar (Structural Patterns), sınıflar ve nesneler arasındaki ilişkileri düzenler; Decorator, var olan bir nesneye kaynak kodu değiştirmeden yeni sorumluluklar ekler; Repository ise veri erişim mantığını iş mantığından ayıran bir soyutlama katmanı kurar. Davranışsal kalıplar (Behavioral Patterns), nesneler arası iletişim ve sorumluluk dağılımını yönetir; Observer (Gözlemci) kalıbı bir nesnenin durumu değiştiğinde bağlı tüm abonelerin bilgilendirilmesini sağlarken, Strategy kalıbı algoritma seçiminin çalışma zamanında yapılmasına olanak tanır. Makine öğrenmesi ve yapay zeka sistemlerinde tasarım kalıpları kritik bir altyapı rolü üstlenir. Strategy kalıbı, aynı arayüz üzerinden çalışma zamanında farklı model algoritmalarının (RandomForest, XGBoost, derin öğrenme) seçilmesine olanak tanır; AutoML sistemleri bu kalıba yaslanır. Observer kalıbı, Keras ve PyTorch Lightning gibi kütüphanelerdeki callback sistemlerinin temelini oluşturur: eğitim doğruluğu belirli bir eşiğin altına düştüğünde otomatik erken durdurma (early stopping) tetiklenir, metrikler MLflow ve Weights & Biases gibi araçlara aktarılır. Factory kalıbı, farklı veri kaynaklarından (dosya, veritabanı, bulut depolama) veri yükleyen nesneleri tek bir arayüzden üretir. Repository kalıbı ise Feast ve Tecton gibi Feature Store mimarilerinde depolama katmanını (PostgreSQL, S3, Redis) soyutlar. 2025-2026 itibarıyla klasik GoF kalıpları, ajan tabanlı yapay zeka (agentic AI) mimarilerinde yeni biçimler kazanmıştır. Andrew Ng'in öne çıkardığı dört ajan tasarım örüntüsü — Reflection (Yansıma), Tool Use (Araç Kullanımı), Planning (Planlama) ve Multi-Agent Collaboration (Çoklu Ajan İşbirliği) — sırasıyla Observer+Strategy, Facade+Command, Chain of Responsibility ve Mediator kalıplarının dönüşümüdür. HumanEval kıyaslamasında Reflection örüntüsünün kod doğruluğunu %80'den %91'e çıkardığı ölçülmüştür. Mikroservis mimarilerinde ise Circuit Breaker (Devre Kesici), API Gateway ve CQRS tasarım kalıpları geleneğini bulut-yerel sistemlere taşımaktadır.

GoF ve Üç Temel Kategori

1994'te Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides — "Gang of Four" (Dörtlü Çete) — tarafından yayımlanan kitap, 23 nesne yönelimli tasarım kalıbını kodlamıştır. Bu kalıplar üç kategoriye ayrılır: Yaratımsal Kalıplar (Creational) nesne oluşturmayı yönetir; Yapısal Kalıplar (Structural) sınıflar arası ilişkileri düzenler; Davranışsal Kalıplar (Behavioral) nesneler arası iletişimi tanımlar. Kalıplar belirli kodu dikte etmez; yalnızca belirli bir probleme karşı izlenebilecek genel çözüm yaklaşımını tarif eder. Bu sayede aynı kalıp Python'da da, Java'da da, TypeScript'te de uygulanabilir.

Temel Kalıplar ve Açıklamaları

Singleton: Bir sınıftan yalnızca tek nesne üretilmesini garanti eder; global model konfigürasyonu veya bağlantı havuzları için idealdir. Factory: Hangi somut nesnenin üretileceğini istemciden soyutlar; farklı veri kaynakları için okuyucu nesneleri üretmede kullanılır. Observer: Bir nesne değiştiğinde tüm aboneleri bilgilendirir; eğitim callback'leri bu kalıbın doğrudan uygulamasıdır. Strategy: Algoritma seçimini çalışma zamanına bırakır; model değişimi veya optimizasyon yöntemi geçişinde güçlüdür. Decorator: Kaynak kodu değiştirmeden nesneye yeni davranış ekler; önbellekleme veya loglama katmanları bu şekilde eklenir. Repository: Veri erişimini iş mantığından ayıran soyutlama katmanı; Feature Store'lar bu kalıpla inşa edilir.

Makine Öğrenmesi ve AI Sistemlerinde Kullanım

Tasarım kalıpları, ML/AI sistemlerinde üretim altyapısının temelini oluşturur. Strategy kalıbı, aynı arayüz üzerinden çalışma zamanında RandomForest, XGBoost veya bir sinir ağı arasında geçiş yapar; AutoML sistemleri bu kalıba yaslanır. Observer kalıbı, Keras'ın ModelCheckpoint/EarlyStopping ve PyTorch Lightning'ın Trainer callback'leri ile MLflow/W&B entegrasyonunda hayat bulur. Factory kalıbı, CSV, veritabanı veya API gibi farklı veri kaynaklarını tek bir arayüzden ele alır. Repository kalıbı ise Feast ve Tecton gibi Feature Store mimarilerinde depolama katmanını (PostgreSQL, S3, Redis) soyutlar; test sırasında sahte veri katmanı kullanımı kolaylaşır.

Agentic AI ve Mikroservislerde Kalıpların Evrimi

2025-2026 itibarıyla klasik GoF kalıpları, yeni bağlamlarda yeniden yorumlanmaktadır. Andrew Ng'in öne çıkardığı dört ajan tasarım örüntüsü — Reflection, Tool Use, Planning ve Multi-Agent Collaboration — sırasıyla Observer+Strategy, Facade+Command, Chain of Responsibility ve Mediator kalıplarının dönüşümüdür. HumanEval kıyaslamasında Reflection örüntüsünün kod doğruluğunu %80'den %91'e çıkardığı ölçülmüştür. Mikroservis mimarilerinde ise Circuit Breaker (Devre Kesici), API Gateway ve CQRS tasarım kalıpları geleneğini bulut-yerel sistemlere taşımaktadır.

Ajansal AI Tasarım Kalıpları

Yansıma (Reflection)

Ajan kendi çıktısını eleştirir ve yeniden üretir; tek geçişten daha yüksek kalite, iç geri bildirim döngüsü olarak işlev görür.

Araç Kullanımı (Tool Use)

LLM dış araçları (API, arama, kod çalıştırıcı) çağırır; bilgi kesme tarihini aşar ve hesaplamalı hataları azaltır.

Planlama (Planning)

Karmaşık hedefi alt görevlere böler ve yürütür; ReAct, Plan-and-Execute ve Task Decomposition bu kategoridedir.

Çok Ajan İşbirliği

Farklı uzmanlıkta ajanların hiyerarşik veya çapraz iletişimle görev paylaşımı; CrewAI, AutoGen ve LangGraph bu deseni uygular.

Sık Sorulan Sorular

  • check_circle Tasarım kalıpları sadece nesne yönelimli diller için mi geçerlidir? Hayır. GoF kalıpları nesne yönelimli bağlamda tanımlansa da ilkeleri işlevsel programlama, mikroservisler ve ajan tabanlı AI sistemlerine uyarlanmaktadır. Python'daki dekoratör sözdizimi, Decorator kalıbının dil düzeyinde doğrudan bir uygulamasıdır.
  • check_circle Singleton kalıbı neden eleştiriliyor? Singleton, global durum yaratarak birim testlerde izolasyonu zorlaştırır ve çoklu iş parçacıklı (multi-threaded) ortamlarda dikkatli senkronizasyon gerektirir. ML bağlamında paylaşılan bir model nesnesinin iş parçacıkları arasında güvenli kullanımı bu sorunu somutlaştırır.
  • check_circle Strategy ve Factory kalıpları arasındaki fark nedir? Factory, nesne oluşturma sürecini soyutlar (hangi nesne yaratılacak?). Strategy, davranışı soyutlar (hangi algoritma kullanılacak?). ML'de Factory model nesnelerini üretirken Strategy hangi modelin seçileceğini çalışma zamanında belirler; ikisi sıklıkla birlikte kullanılır.
  • check_circle Gerçek bir ML projesinde Observer kalıbını nerede görürüm? Keras'ta ModelCheckpoint, EarlyStopping ve TensorBoard callback'leri; PyTorch Lightning'da Trainer callback'leri; MLflow ve Weights & Biases entegrasyonları hepsi Observer kalıbını uygular. Eğitim döngüsü (konu) metrik değişimlerini abone callback'lere (gözlemcilere) bildirir.
  • check_circle Agentic AI tasarım örüntüleri klasik tasarım kalıplarından nasıl farklılaşır? Klasik GoF kalıpları senkron, deterministik kod yapılarını hedeflerken ajan örüntüleri asenkron, olasılıksal ve çok adımlı akıl yürütme süreçlerini yönetir. Reflection örüntüsü, modelin kendi çıktısını değerlendirip iyileştirdiği bir Observer+Strategy döngüsüdür; bu düzey otonomluk GoF'ta tanımlanmamıştır.