Tasarım kalıpları, yazılımların tasarım aşamalarında günlük hayatımızda yaygın olarak ortaya çıkan problemler için tekrarlanabilir çözümlerdir. Yazılım geliştiricleri tarafından sayısız deneme yanılma yoluyla elde edilmişlerdir. "Tasarım kalıbı" direkt olarak koda uygulanabilir (kısaca bir algoritma ya da kod değildir) bir çözüm değildir. Farklı durumlarda karşılaştığımız yine aynı problemlerin nasıl çözüleceğini açıklar. Özellikle de nesne yönelimli programlamada nesnelerin nasıl iletişim kuracağını ve nasıl birbirlerine bağlanacağını tasarladığımız yapılardır. Bu işleri "software designerlar" yapar. Tasarım kalıplarını daha önce hiç duymamış dahi olabilirsiniz. Gömülü sistem (embedded system) tasarımı yapıyorsanız, veritabanı (database) ile ilgileniyorsanız veya network protocol programlıyorsunuzdur duymamış olabilirsiniz. Veya developersınızdır klasik 2-3 tane design pattern'ı sürekli olarka kullanıyorsunuzdur.
Yazılım kalıpları geliştirme aşamasını, test edilmiş, kanıtlanmış geliştirme paradigmaları sayesinde hızlandırır. Tasarım kalıplarını kullanmak küçük sorunların büyük problemlere yol açmasını engellemeye yardımcı olur. Kodun okunulabilirliğini arttırır. Çoğu zaman, insanlar sadece belli sorunlar için genel olmayan çözümler kullanırlar. Bu çözümler belli sorunlar değil de genel bir soruna uygulmaya kalkındığında işler zora biner. Tasarım kalıpları, spesifik bir soruna bağlı çözümler gerektirmeyen, genel bir çözüm sunar.
1- Creational Patterns (Yaratımsal Kalıplar): Bu tasarım deseni nesneleri doğrudan new operatörü kullanarak oluşturmak yerine nesne oluşturma mantığını gizleyerek sınıflardan nesne oluşturmaya alternatif çözümler sunar. Bu program akışında hangi nesneye ihtiyaç varsa onu oluşturmada esneklik ve kolaylık sağlar.
2- Structural Patterns (Yapısal Kalıplar): Bu tasarım deseni nesneler arasındaki ilişkinin yapısını düzenlemek için çözümler sunar.
3- Behavioral Patterns (Davranışsal Kalıplar): Bu tasarım deseni çalışma zamanında nesneler arasındaki davranışlar için çözümler sunar.
Bu tasarım kalıplarına biraz örnekler verelim:
Bunlar bilinen popüler tasarım kalıplarıdır. Bunların dışında bir çok tasarım kalıbı daha bulunmaktadtır. Yazımın başında da dediğim gibi bunlar uzun süredir yazılımcıların deneme yanılma yoluyla buldukları genel çözüm yollarıdır.
31.01.2023