Sunday, December 9, 2012

Tasarım Desenleri (Design Patterns) Nedir?

Tasarım desenleri(Design Patterns), yazılım tasarımında sürekli karşılaşılan genel sorunlara esnek, yeniden kullanılabilir, başarılı çözümler getiren bir takım hazır kalıplardır. Hazır olarak kodun içine konulup çalışabilen, bitmiş tasarımlar değildir. Çeşitli durumlarda sorunların nasıl giderileceğini açıklayan, bunlara yol gösteren açıklamalardır. Nesneye dayalı programlamada, tasarım desenleri sınıf ve nesneler arasındaki ilişkilerin en iyi şekilde nasıl olmaları gerektiğini açıklayan yöntemlerdir. Algoritmalar, tasarım deseni değildir. Çünkü bunlar hesaplama sorunlarına çözüm getirirler, oysaki tasarım desenleri yazılım tasarımı sorunlarıyla ilgilenir. Günümüzde sıkça yapılan bir diğer hata ise, çok spesifik bir soruna karşılık kullanılan ve esnek olmayan yapılara tasarım deseni adını vermemizdir.

Nesneye dayalı programlamada sınıfların kendi içinde tutarlı, fakat diğer sınıflara en az bağımlı olmaları beklenir. Yazılım parçalarının tekrar kolayca kullanılabilir olmaları, kolayca genişleyebilir veya sistemden kolayca çıkarılabilir olmaları yani kısaca esnek olmaları beklenir. Yeni ihtiyaçların, yazılımın diğer kısımlarını en az biçimde etkileyerek yazılıma kolayca dahil olmaları beklenir.(Open-Closed Principle) İşte tasarım desenleri, nesneye dayalı programlamanın bu prensiplerini doğru bir şekilde uygulamamızı sağlar. Sonuç olarak tasarım desenlerini uygulayarak, etkin kodlar üretiriz, yazılımın kalitesini arttırırız. Zamandan ve yazılım için harcanan iş gücünden de tasarruf etmiş oluruz.

Yazılımcılar en çok kullanılan ve en etkin yöntemlere isimler verdiler. Bu yüzden aynı yöntemi kaynaklarda pek çok farklı isimle görebilmek mümkündü. 1994 yılında ise, Gang of Four (dörtlü çete) olarak tanınan "Erich Gamma", "Richard Helm", "Ralph Johnson" ve "John Vlissides" isimli yazarlar "Design Patterns: Elements of Reusable Object-Oriented Software" adlı kitabı yazdılar ve bu en yaygın olarak kullanılan 23 deseni en çok kullanılan isimleriyle bu kitapta topladılar. Bunlar:

TASARIM DESENLERİ

  • Creator Design Patterns (Kurucu Tasarım Desenleri)
  • Abstract Factory (Soyut Fabrika)
  • Builder (Kurulum Nesnesi)
  • Factory Method (Fabrika Yordamı)
  • Prototype (Kopya Nesne)
  • Singleton (Tek Nesne)

  • Structural Design Patterns (Yapısal Tasarım Desenler)
  • Adapter (Adaptör)
  • Bridge (Köprü)
  • Composite (Ağaç Yapısı)
  • Decorator (Dekorasyon)
  • Facade (Ön Yüz)
  • Flyweight (Hafif Ağırlık)
  • Proxy (Özdeş Nesne)

  • Behavioral Design Patterns (Davranışsal Tasarım Desenler)
  • Chain of Responsibility (Sorumluluk Zinciri)
  • Command (Komut)
  • Interpreter (Yorumlayıcı)
  • Iterator (Tekrarlayıcı)
  • Mediator (Arabulucu)
  • Memento (Hatırlayıcı)
  • Observer (Gözlemci)
  • State (Durum)
  • Strategy (Strateji)
  • Template Method (Kalıp Yordam)
  • Visitor (Ziyaretçi)

Sonraki yazılarımda bu desenlerin ne olduğuna ve hangi durumlarda kullanıldıklarına örnekler eşliğinde daha detaylı bir biçimde değineceğim. Şimdilik herkese iyi günler.

2 comments:

  1. Cok guzel olmus taner bey gercekten begndim ama turkce isimleri sizede biraz garip gelmiyo mu okuyunca

    ReplyDelete
    Replies
    1. Merhaba, evet Türkçe isimler konusunda haklısınız. Ancak internette bu konu ile ilgili biraz araştırma yapınca hemen hemen aynı isimlerin kullanıldığını gördüm. Ben de farklı bir şekilde adlandırmak istemedim. Fakat önerilere açığım, daha uygun isimlendirmeler önerirseniz seve seve değiştirebilirim.

      Delete