Tasarım şablonları (tasarım kalıpları, tasarım örüntüleri, tasarım desenleri), yazılım tasarımı sırasında sıkça karşılaşılan, birbirine benzer sorunları çözmek için geliştirilmiş ve kanıtlanmış genel çözüm önerileridir. Bu şablonlar, nesneler ve sınıflar arasındaki ilişkileri-etkileşimleri gösterirler. Programcı, bir tasarım şablonunu yaşadığı soruna bakarak kullanabilir.
Tasarım şablonlarının temelleri, Mimar Christopher Alexander‘ın 1970 sonlarında başlatığı çalışmalara dayanmaktadır. Alexander, 1977 ‘de “A Pattern Language: Towns, Buildings, Construction” ve 1979 ‘da “A Timeless Way of Building” kitaplarını yayımlamıştır. Bu kitaplarda tasarım şablonlarını içeren mimarî desen örneklerinin yanı sıra desenlerin nasıl belgeleneceği de konu edilmiştir.
1987 ‘deki OOPSLA (Object Oriented Programming, Systems, Languages, and Applications) konferansına kadar desenlerle ilgili bir çalışma ortaya çıkmamıştır. Bu tarihten sonra ise Grady Booch, Richard Helm, Erich Gamma ve Kent Beck başta olmak üzere şablonlarla ilgili makale ve sunumlar yayımlamışlardır. 1994 ‘te Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides tarafından yayımlanan, “Design Patterns: Elements of Reusable Object-Oriented Software” kitabı tasarım şablonlarının yazılımda kullanılmasında dönüm noktası olmuştur.
Kitabın isminin uzun olmasından dolayı konuyla ilgili e-postalarda kısaltma yapılarak, yazarları kastederek, kitabın “Dörtlü Çetenin Kitabı (Book of GoF)” olarak anılmasıyla Dörtlü Çete (Gang Of Four) ismi ortaya çıkmıştır. Kitabın yazarları, bilgisayar bilimleri camiasında artık Dörtlü Çete olarak bilinmektedir.
Dörtlü Çete, kitabında tasarım şablonlarını üç sınıfa ayırır;
- Oluşturucu Tasarım Şablonları (Creational Desing Patterns)
- Yapısal Tasarım Şablonları (Structual Desing Patterns)
- Davranışsal Tasarım Şablonları (Behavioral Desing Patterns)