Tasarım Kalıpları: Giriş

Nedir?

Tecrübeli, nesne-tabanlı yazılım geliştirenler tarafından yazılım geliştirme sürecinde ortaya çıkan genel problemleri çözme amacıyla geliştirilen/düşünülen çözüm ve/veya çözüm yöntemi bütünleri tasarım kalıpları, tasarım desenleri, tasarım örüntüleri gibi isimler ile adlandırılır.

Sözünü ettiğimiz kalıplar, Gang of Four (GoF) olarak bilinen dört yazar tarafından yazılan “Design Patterns: Elements of Reusable Object-Oriented Software” isimli kitabın yayınlanmasından sonra alanımızda popülerlik kazanmıştır.

Tasarım kalıpları genellikle sınıflar, nesneler arası ilişkileri ve etkileşimleri gösterir/açıklar. Dolayısıyla programlama, yazılım tasarımına yapısal bir yaklaşım olarak görülebilirler.

Daha detaylı teorik bilgiyi Software design pattern başlıklı wikipedia sayfasından edinebilirsiniz.

Bağlantısını verdiğim sayfada bahsedildiği gibi tasarım kalıpları Oluşturuluşsal (Creational), Yapısal (Structural), Davranışsal (Behavioral) ve Eşzamansal (Concurrency) olmak üzere 4 ana kategoride incelenebilirler.

Bunlardan sonuncusu olan eşzamansal kalıplar daha ileri düzey sayılabilecek çoklu kullanım (multithreading) ile ilgilidir. Bu yüzden ilk aşamada sadece ilk üç kategorideki bazı kalıplardan bahsetmeye çalışacağım.

Zamanla, yazıları ekledikçe aşağıdaki fihriste bağlantılarını ekleyeceğim.

Fihrist

Üzerine yazmayı düşündüğüm tasarım kalıpları;

  • Oluşturuluşsal (Creational)
    1. Yegâne (Singleton)
    2. Fabrika & Soyut Fabrika (Factory & Abstract Factory)
    3. Yapıcı (Builder)
    4. Örnek (Prototype)
  • Yapısal (Structural)
    1. Uyarlayıcı (Adapter)
    2. Köprü (Bridge)
    3. Bileşik (Composite)
    4. Dekoratör (Decorator)
    5. Cephe (Facade)
    6. Sineksiklet (Flyweight)
    7. Vekil (Proxy)
  • Davranışsal (Behavioral)
    1. Komut (Command)
    2. Yorumlayıcı (Interpreter)
    3. Yineleyici (Iterator)
    4. Arabulucu (Mediator)
    5. Yadigâr (Memento)
    6. Gözlemci (Observer)
    7. Durum (State)
    8. Strateji (Strategy)
    9. Şablon (Template)
    10. Ziyaretçi (Visitor)