
Yazılım tasarım desenleri, yazılım yaparken sıkça karşılaşılan, birbirine benzer sorunları çözmek için geliştirilmiş ve işlerliği kanıtlanmış genel çözüm önerileridir. Genel olarak yazılım tasarım desenleri programlama dillerinden bağımsız olarak tanımlansalar da, nesneye yönelimli programlama dillerine uygun yazılım tasarım desenleri daha çok bilinir. Bu desenler, nesneler ve sınıflar arasındaki ilişkileri ve etkileşimleri gösterir.
Tasarım desenleri, genel sorunlara esnek ve yeniden kullanılabilir çözümler üretmek için geliştirilmiştir. Nesne yönelimli programlamada sınıfların kendi içerisinde tutarlı, diğer sınıflara ise bağımlılığının az olması beklenir. Program parçalarının kolay bir şekilde birleştirilmesi, kolay bir şekilde sistemden çıkarılması o programın esnek bir yapıda olduğunu gösterir. Tasarım desenleri, nesne yönelimli programlarda bu prensiplerini doğru bir şekilde uygulanmasını ve programın esnek bir yapıda olmasını sağlar.
1994 yılında, Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides adlı yazarlar “Tasarım Desenleri:Tekrar kullanılabilir Nesneye Yönelik Yazılımın Temelleri (Design Patterns: Elements of Reusable Object-Oriented Software)” adlı kitabı yazdılar ve yaygın olarak kullanılan 23 tasarım desenine kitapta yer verdiler.
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)
Ben, tasarım desenlerinin programlamada zenginlik olduğunu, faydalı olduğunu düşünüyorum. Hatta bazı tasarım desenlerini de kendi programlarımda kullanıyorum. Ancak bazı yazarlar tarafından yazılım tasarım desenlerinin sorunların çözümlerini olumsuz yönde etkilediği gerekçeleri ile eleştirilmiştir.
Tâbi ki bu tasarım desenlerinin hepsine vâkıf değilim. Aralarında kullandığım tasarım desenleri de var. İlerleyen zamanlarda bu tasarım desenlerinden bahsetmeyi umuyorum.
Kaynak: Vikipedia, T.Güngör