Design pattern, yaygın olarak karşılaşılan sorunlar için öngörülen ve tekrarlanabilir çözüm kalıbı veya açıklamasıdır.
Çözümlerin yeniden uygulanabilir olması büyük sorunlara neden olabilecek ufak sorunları önlemeye yardımcı olur. Design pattern’ler herhangi bir programlama diline bağlı değildir. Bu da onları evrensel olarak uygulanabilir kılar.
Desen (pattern) kavramı ilk olarak Christopher Alexander tarafından "A Pattern Language: Towns, Buildings, Construction" adlı kitapta ortaya atılmıştır. Bu kitapta bir "dil" tanımlanmıştır ve bu dil şablonlardan oluşmaktadır.
Fikir daha sonra Dörtlü Çete (Gang of Four) tarafından yayımlanan "Design Patterns: Elements of Reusable Object-Oriented Software" kitabında geliştirilmiştir. GoF kitabında, çeşitli problemleri çözen 23 tasarım modeli bulunur. Kitabın yayımlanmasından sonra düzinelerce yeni model keşfedilmiştir.
Kalıplar, tasarım süreci gelişimini ve yazılımcılar tarafından okunabilirliği arttığı müddetçe iletişimi hızlandırır. Zaman ve maliyetten de tasarruf edilmesini sağlar. Bununla birlikte "pattern"lerin dezavantajları da bulunur. Bu kalıplarla uğraşmak çok kapsamlı bilgi gerektirir. Tasarım kalıplarının varlığı, her sorunun kalıpla çözüleceğine dair inancı da pekiştirebilir. Diğer bir deyişle yaratıcı çözümler bulma merakını kısıtlayabilir.